Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нужна помощь мастеров!!! [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]

-- пишет вроде нормально , а вот на


А как ты проверял ???


Наверх

Титульная страница Поиск, карта сайта Написать письмо