var
c:array[byte] of char;
....
repeat
blockread(fin,b,sizeof(b),countr);
for i:=0 to countr do
inc(c[b]);
until (countr=0) or (countr<>sizeof(b));
Blockwrite - как работает?
Blockwrite(f,buf,numblock,realnum).
Допустим, нужно посчитать, сколько раз в файле повторяются символы от 0 до 255, как это сделать, чтобы комп не зависал, т.е. используя минимум ресурсов, если осуществлять просто перебор, то начиная с файлов в несколько килобайт это уже затруднительно.
Хотя для твоей задачи скорее всего BlockRead полезней будет. Читаешь кусок файла в символьный массив и считаешь количество символов.
Читашь до тех пор, пока файл не кончится (об этом BlockRead и скажет).
Ну, это, так сказать, общие фразы.
Что значит число считываемых блоков.
Я считывал по одному блоку и считал количество символов, но это работает на файлах до нескольких килобайт, а дальше зависает.
f идентификатор нетипизированного файла var f:file;
buf буфер
numblock сколько надо записать
realnum сколько записано
но лучше пользоваться API функцией WriteFile
У меня есть считанный файл ( b:array[0..2047] of byte) и 256 символов: от 0 до 255. Мне нужно посчитать сколько раз повторяется каждый из символов в файле.
Я думаю сделать это с помощью цикла for,
repeat
blockread(fin,b,sizeof(b),countr);
until (countr=0) or (countr<>countwr); - {это из справки по Delphi}
вот так файл считывается, куда тут можно цикл for вставить?
Код:
В результате c - количество символов с кодом i в массиве b.
Только объясни что за команда inc?
инкремент т.е.
инкремент т.е.