![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужна помощь мастеров!!! [D6, Win2k]
Locked © (2002-04-25 07:11:00)Как в реестр записать файл, а потом его считать?
Что я делаю неправильно:
function WriteFile(Name: string; FileName: string): boolean;
var
S: TFileStream;
Size: integer;
begin
try
S:=TFileStream.Create(FileName, fmOpenRead);
Reg.WriteBinaryData(Name, S, S.Size);
Result:= true;
except
Result:= false;
end;
end;
function ReadFile(Name: string; FileName: string): boolean;
var
D: TFileStream;
Size: integer;
P: Pointer;
begin
try
Size:= Reg.GetDataSize(Name);
D:=TFileStream.Create(FileName, fmCreate);
Reg.ReadBinaryData(Name, D, Size);
D.Free;
Result:= true;
except
Result:= false;
end;
end;
пишет вроде нормально , а вот на
Reg.ReadBinaryData(Name, D, Size) вылетает
Cobalt (2002-04-26 20:09:00) [1]Попробуй следующий код:
function WriteFile(Name: string; FileName: string): boolean;
var
S: TFileStream;
Buf:array of byte;
Size: integer;
begin
try
S:=TFileStream.Create(FileName, fmOpenRead);
SetLength(Buf, S.Size);
S.ReadBuffer(Buf, S.Size);
Reg.WriteBinaryData(Name, Buf, S.Size);
Result:= true;
except
Result:= false;
end;
end;
Ну и соответственно читать тоже нужно в буфер
Вся фишка в том, что TFileStream - это указатель на таблицу виртуальных методов класса + поля класса (приблизительно). А сами даные TFileStream в "себе" не хранит, он только предоставляет доступ к ним через свои функции. Более подробно можно узнать в Хелпе по TFileStream и прочим потокам.
Coalycat (2002-04-25 19:57:00) [2]лучше воспользоваться Tregistry
cdaDmitriy (2002-04-25 11:18:00) [3]-- пишет вроде нормально , а вот на
А как ты проверял ???