![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
AssignFile? [D5, D6, Win95/98, WinXP]
Fog © (2002-09-15 12:52:00)Извините за ламерскую прозьбу, но не могли бы вы привести мне пример чтения определенной информации из фаила (строки или определенного знака). Я знаю что это делается с
AssignFile, но у меня ничего не получается :(
Алексей Ким (2002-09-15 15:47:00) [1]а разве Chr(a) надо? оно и так чар
777 (2002-09-15 15:38:00) [2]
function ReadFile(FileName:String):String;
var f:TFileStream;
a:integer;
begin
f:=TfileStream.Create(FileName,fmOpenRead);
f.Position := 0;
while f.Position < f.Size do
begin
a:=0;
f.Read(a,1);
Result:=Result+Chr(a);
end;
f.Free;
end;
так тоже работает.
может пригодится:)))
Алексей Ким (2002-09-15 15:28:00) [3]забыл... uses Windows,SysUtils; не нада
Алексей Ким (2002-09-15 15:27:00) [4]хм... не понял...
вот так все работает
--
program myprog;
{$APPTYPE CONSOLE}
uses Classes, Windows, SysUtils;
var i: TFileStream;
a: Char;
begin
i := TFileStream.Create("1.txt",$0000);
i.Position := 0;
while i.Position<i.Size do
begin
i.Read(a,1);
Write(a);
end;
i.Free;
end.
777 (2002-09-15 15:21:00) [5]a:integer;
f := TFileStream.Create(filename, $0002);
f.Position := 0;
while f.Position < f.Size do
begin
f.Read(a,1);
f.Write(a,1);
Result :=Result+ Chr(a);
end;
f.Free;
Fog (2002-09-15 15:16:00) [6]
> Алексей Ким
Но мне нужно читать Stringили integer, а получается - ‹Ж^[Г
...
Fog (2002-09-15 14:43:00) [7]
> greenrul
[Error] Unit1.pas(35): Incompatible types: "procedure, untyped pointer or untyped parameter" and "String"
Алексей Ким (2002-09-15 14:21:00) [8]помоему гораздо легче делать ето с TFileStream
там не надо ресет/реврайт просто
var f: TFileStream;
a: Char;
f := TFileStream.Create(filename, $0002);
f.Position := 0;
while f.Position < f.Size do
begin
f.Read(a,1);
f.Write(a,1);
Result := Result + a;
end;
f.Free;
в результе получаешь файл не важно бинарный или нет
greenrul (2002-09-15 13:58:00) [9]
var
f:file;
s:string;
begin
assignfile(f,"твой файл");
reset(f); {чтение}
{если хочешь писать в файл, делай rewrite(f)}
ReadLn(f,s); {читает 1ую строку в переменную s, после чего переходит на новую, просто Read не переносит на новую
}
ReadLn(f,s){читает 2ую строку в переменную s}
.... n раз
ReadLn(f,s){читает n-ую строку в переменную s}
{записывать в файл соответсвенно WriteLn(f,s);}
closefile(f);
end;
Doctor Snap (2002-09-15 13:14:00) [10]Если двоичный файл-
var
f:file;
bufer:array [0..255] of byte;
z,k:integer;
begin
assignfile(f,"твой файл");
reset(f,1)(для существующего) или rewrite(f,1);(для несуществующего или если хочешь переписать существующий)
k:=filesize(F);- размер файла
seek(f,0); установка позиции в файле.
blockread(f,bufer,255,z);
blockwrite(f,bufer,255,z);
-это запизывает в файл из буфера 255 байт. z- количество реально обработанных блоков (работает как возврат из функции)
closefile(f);
end;
второй параметр в reset rewrite- размер одного блока в файле. Лучше ставить 1.