Другие языки программирования и технологии
паскаль. нужно считать строку длинной 100 000 символов. тип string до 255. кокой тип подойдет в этом случае???
В какой реализации Паскаля? В 32-битной можно в массив char. В расширенных версиях Pascal, вроде Delphi, можно иметь строки хоть в миллиард символов. В антикварной 16-битной реализации вроде Turbo Pascal можно работать прямо с файлом, хотя это, конечно, намного медленнее.
Turbo Pascal — ограничение на переменные 64 Kb!
Напрямую такую кучу хранить нельзя.
Можно воспользоваться списком строк…
К примеру:
type sSpis = ^rSpis;
rSpis = record
S : String;
Next : sSpis;
end;
var
First, Cur, Last : sSpis;
S : String;
B : record L : Byte; B : array [1..255] of Byte; end absolute S;
F : File;
Size : Integer;
begin
First := nil;
Assign(F, 'myFile');
Reset(F,1);
while Not EOF(F) do begin
BlockRead(F, B.B, 255, Size); B.L := Size;
New(Cur); Cur^.S := S; Cur^.Next := nil;
if First = nil then First := Cur else Last^.Next := Cur; Last := Cur;
end; Close(F);
{ Выводим на экран }
Cur := First; while Cur <> nil do begin Write(Cur^.S); Cur := Cur^.Next; end; WriteLn;
end.
Запустил в TP под DOSBox данный код.
Без проблем вывел файл размером 441152 байт!

Напрямую такую кучу хранить нельзя.
Можно воспользоваться списком строк…
К примеру:
type sSpis = ^rSpis;
rSpis = record
S : String;
Next : sSpis;
end;
var
First, Cur, Last : sSpis;
S : String;
B : record L : Byte; B : array [1..255] of Byte; end absolute S;
F : File;
Size : Integer;
begin
First := nil;
Assign(F, 'myFile');
Reset(F,1);
while Not EOF(F) do begin
BlockRead(F, B.B, 255, Size); B.L := Size;
New(Cur); Cur^.S := S; Cur^.Next := nil;
if First = nil then First := Cur else Last^.Next := Cur; Last := Cur;
end; Close(F);
{ Выводим на экран }
Cur := First; while Cur <> nil do begin Write(Cur^.S); Cur := Cur^.Next; end; WriteLn;
end.
Запустил в TP под DOSBox данный код.
Без проблем вывел файл размером 441152 байт!


Либо массив строк, либо всю строку в массив символов.
А по-другому никак.
А по-другому никак.
обычно в подобных задачах не нужно хранить всю строку. нужно считывать посимвольно и обрабатывать по ходу
Похожие вопросы
- Паскаль. Сколько байт занимает переменная типа string[10]? 11? .
- С++ работа с символами Дан к примеру пример строки "400+100=500" и мне надо достать 400 100 500 и перевести в int
- Как преобразовать тип string к типу int? C++
- чему идентичен тип string в delphi 7 ?
- Строки ассемблер нужно заполнить строку (10) рандомными символами. (MASM) как? помогите!
- В паскале нужно разбить целое число на три слогаемых, всевозможными способами.
- Напишите, пожалуйста программу в Дельфи. Вывести k (катое) слово строки S.Слово - набор символов, ограниченный пробелами
- Хочу заняться программированием. Хочу для себя понять, как связана строка программирование (с буквами, символами) с ..(+)
- Ассемблер (TASM). Нужно ввести строку и с помощу команд обработки цепочек подсчитать кол-во русской буквы "в" в строке
- Как рисовать анимацию в Турбо Паскале??? Нужно создать рисунок на котором Земля вращается вокруг солнца