![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
считывание по символу [D4, Win95/98]
Ghost! © (2002-10-28 17:36:00)Здравствуйте! Не подскажите, как сделать так, чтоб символы из файла считывались по одному? Например, переменной "a" присвоить первый символ файла "x.xxx", переменной "b" второй символ и и т.д. Спасибо
Ghost! (2002-10-28 20:52:00) [1]ВСЕМ ОГРОМНОЕ СПАСИБО, ВСЁ ПОШЛО.
LongIsland (2002-10-28 19:16:00) [2]
var
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer: PChar;
begin
if not dgOpen.Execute then Exit;
Open:=True;
FileName:=dgOpen.FileName;
Buffer:="";
try
iFileHandle := FileOpen(FileName, fmOpenRead);
iFileLength := FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead := FileRead(iFileHandle, Buffer^, iFileLength);
FileClose(iFileHandle);
finally
FreeMem(Buffer);
end;
end;
В переменной Buffer будет содержаться все содержание файла.a:=Buffer[i];- обращение к любому символу
Пример взят из доков:-)
Ghost! (2002-10-28 18:59:00) [3]2 Gluka
Интересно, но у меня чего-то не идёт. Пишет Error I/O 103 и всё... Очень благодарен всем.
Gluka (2002-10-28 18:22:00) [4]Var
f: file of char;
FileVars: array [0..10] of char; // filesize(F)
i: integer;
begin
for i:=0 to filesize(F)-1 do
begin
seek(f,i);
Read(f,FileVars[i]);
end;
closefile(f);
end;
Каждый елемент масива->разные переменные(значение)
han_malign (2002-10-28 17:52:00) [5]Но грамотнее делать через блочное чтение записи фиксированного размера (можно и переменного но еще поле размера хранить). Как вариант для хранения именованных данных - Ini файл.
Anatoly Podgoretsky (2002-10-28 17:51:00) [6]Это сколько же переменных будет
LongIsland (2002-10-28 17:46:00) [7]Можно загнать его в TStringList, например, а потом оттуда счтывать хоть по одному, хоть по 10.
Можно загнать его в буфер и, соответственно, делать тоже самое. Вариантов масса:-)
Smithson (2002-10-28 17:45:00) [8]Эээээээээээээ, вру! После AssignFile еще Reset(F, 1) нужен!
Smithson (2002-10-28 17:44:00) [9]f: file;
C: Byte;
I: Integer;
...
AssifnFile(F,"x.xxx");
BlockRead(f,c,1,i);
...
CloseFile(F);
ну и свяьой F1