![]() |
|
|
#1
|
|||
|
|||
|
продолжаю самостоятельно осваивать Delphi. Написал программу, ошибок не выдаёт, но аварийно завершается. Наверное, что-то не понимаю в вариантах. помогите, кому не трудно.
Дан файл, надо цифры записать в memo1 , а буквы в memo2. Код:
procedure TForm1.Button1Click(Sender: TObject);
var fi1:file;
buf1:variant;
chislo:chis;
k1:integer;
begin with od1 do
if execute
then e1.Text:=extractFiledir(od1.FileName)+filename;
assignFile(fi1,od1.FileName); {$I-} reset(fi1,1); {$I+}
k1:=0;
repeat BlockRead(fi1, Buf1,sizeOf(buf1),k1);
if VarIsEmpty(buf1)=false
then if VarType(buf1) in chislo
then red1.lines.Add(buf1)
else if buf1<>' '
then red2.lines.Add(vartostr(buf1));
until (k1<>0) or (k1<>10);
end; |
|
#2
|
|||
|
|||
|
В BlockRead в качестве буфера обычно передают массив либо выделенную область памяти (которую потом нужно освободить). А дальше этот массив уже можно побайтно разбирать, где там цифры, где буквы.
Вот тут описание BlockRead и пример чтения файла побайтно (неожиданная ссылка): http://www.delphisources.ru/pages/fa...kRead.php.html Проверить, что символ является цифрой: Код:
if AChar in ['0'..'9'] then... буквой: Код:
if AChar in ['a'..'z', 'A'..'Z'] then... |