![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TFileStream
Николай Быков © (2002-10-10 14:59:00)Объясните что это такое, в каких случаях нужен, как с ним работать. Только не посылайте в хелп.
Zemal (2002-10-11 15:03:00) [1]TStream - класс предоставляющий поля и методы для возможности работы с очередью данных... ну типа поток данных :)... примерно как река течёт... :) вот-с... Этот класс имеет абстрактные методы для управления этим потоком данных (неважно какой поток и откуда он идёт - из файла или с сетевого адаптера :) ). Эти абстрактные методы должны быть обязательно перекрыты в наследниках, а именно методы чтения и записи куда-то (например участок памяти, файл и т.д.)... От этого класса, который сам по себе бесполезен для программиста, пораждены стандартные классы для обработки потока-файла или потока-памяти или... ну и т.д. можешь создать своего потомка этого класса и описать методы чтения и записи... например с USB-порта видео поток перехватывать... гы-гы :) это уже твои проблемы :)... для работы с потоком используется понятие позиция (см. свойство Position: Int64), есть также процедуры и функции перемещения по потоку и др. в общем в деталях долго описывать... это тебе к литературе надо обратиться :). Понятие потока я кажется понятно описал, а там сам посмотри как он реализован в модуле Classes ищи... он там описан (и все его потомки тоже там... посмотри, будет интересно :) ).
Pumpkin (2002-10-11 14:38:00) [2]2Николай Быков © (10.10.02 14:59)
> Объясните что это такое
Тебе же qube сказал.
Это тебе вместо AssignFile, Reset, Rewrite, BlockRead, BlockWrite и т.д.
Дальше TFilestrem -> F1
MBo (2002-10-11 14:36:00) [3]>это то что мне нужно или нет?
это один из вариантов, причем IMHO очень удобный
Николай Быков (2002-10-11 14:29:00) [4]А если у меня есть record с динамическими массивами то это точто мне нужно или нет?
Kotka (2002-10-10 23:42:00) [5]У меня есть исходники моей программки PatchMaker, которые я выложил специально для ознакомления с этим классом. Это здесь: http://kotka.by.ru/Programmists/howto.htm
lO3ep (2002-10-10 21:49:00) [6]TFileStream Например
Сохранение объекта элемента коллекции, переопределяется метод Store
procedure TКакой-тоОбъектПотомокTCollectionItem.Store(Name:String);
var
S: TFileStream;
begin
Error:="";
try
S:=TFileStream.Create(Name,fmCreate);
except
begin
Error:="Could not open file :"+Name;
exit;
end;
end;
if S=nil then exit;
R:=Self.Get_Какой-тоОбъектПотомокTCollectionItem(Name);
if R=nil then exit;
R.Store(S);
S.Destroy;
end;
Если по сети то - TMemoryStream
procedure WriteStringToStream(Stream: TStream; S: string);
var
i,j:integer;
begin
j:=length(s);
Stream.Write(j,sizeof(integer));
for i:= 1 to length(s) do
begin
Stream.Write(s[i],sizeof(char));
end;
end;
procedure TForm4.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
MS: TMemoryStream;
Err: string;
Res: integer;
begin
....
Command:=Socket.ReceiveText;
MS:=TMemoryStream.Create;
MS.Clear;
WriteStringToStream(MS,"ERROR");
WriteStringToStream(MS,"Incorrect table name: "+Tab_Name);
MS.Position:=0;
ServerSocket1.Socket.Connections[0].SendStream(MS);
......
end;
посмотри еще
\Delphi\Demos\Internet\Chat - очень понятный пример
Rouse_ (2002-10-10 15:02:00) [7]Для работы с файлом в памяти, для пересылки файла по сети
Желаю успехов
qube (2002-10-10 15:01:00) [8]Класс для работы с файлами. Рекомендуется как альтернатива blockread/blockwrite. А как работать -- в хелп.