IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> процедура settextbuf в TMT pascal, TMT игнорирует settextbuf
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской
Реальное имя: Андрей

Репутация: -  0  +


TMT игнорирует settextbuf()
TMT 3.9 DOS
Подскажите, можно ли решит проблему.
В Борланде все работает нормально.

Запускаю с дискеты в чистом досе без SmartDrv.exe
Работает очень медленно, изменение буфера никаких результатов не дает.
tmp.txt - Любой текстовый файл, объемом > несклько килобайт.



Var F : Text;
Ch : Char;
Buf : Array [1..32000] Of Char; {буфер}

F2:text;
Buf2 : Array [1..32000] Of Char; {буфер2}

Begin

Assign(F, 'tmp.txt');
Assign(F2, 'tmp2.txt');

SetTextBuf(F, Buf,sizeOf(Buf));
SetTextBuf(F2, Buf2,sizeOf(Buf2));

Reset(F);
Rewrite(F2);

While Not EOF(F) Do
Begin
Read(F, Ch);
Write(F2,Ch);
Write(Ch);
End;

Close(f);
Close(f2);

End.



Сообщение отредактировано: pshenan -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Предварительное замечание: у меня сейчас нет компилятора, поэтому возможны мелкие ошибки.

В зависимости от того, что нужно сделать, и от размеров файлов можно идти разными путями.
Один из них - считать файл целиком в память и там с ним работать.
Если файл может превышать размеры буфера, то читать файл по частям длиной с буфер.

Var
F, F2 : file;
Ch : Char;
Buf, Buf2 : Array [1..32000] Of Char; {буфер}
L, i : word;
Begin
Assign(F, 'tmp.txt');
Assign(F2, 'tmp2.txt');

Reset(F,1);
Rewrite(F2,1);

While Not EOF(F) Do Begin
blockread(f, buf, 32000, L);
for i := 1 to L do begin
buf2[i] := buf[i];
Write(buf[i]);
end;
blockwrite(f2, buf2, L);
End;

Close(f2);
Close(f);

End.


Если нельзя организовать последовательную обработку файла в одном цикле (например, нужно посимвольно читать из разных мест программы), можно сделать отдельную процедуру добывания очередного символа, которая берет его либо из буфера, либо подчитывет очерадной фрагмент в буфер.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 5.05.2024 9:49
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name