Показать сообщение отдельно
  #1  
Старый 21.11.2013, 15:47
kti kti вне форума
Прохожий
 
Регистрация: 21.11.2013
Сообщения: 10
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Сохранение record в файл

Подскажите, уважаемые, никак не получается, в делфи новичек...
В общем переделываю чужую программу.. там идет сохранение буфера в файл, вот такой кусок
Код:
var bufferTemplate1 : PChar;
    template1Length, pTransfered : integer;
    FS: TFileStream;
    pTemplate : pointer;
begin
     //Сохраняю шаблон в bufferTemplate1
      template1Length := Bsdk_Template_GetSize(pTemplate);
      GetMem(bufferTemplate1, template1Length);
      result := Bsdk_Template_Save(pTemplate, bufferTemplate1, template1Length, pTransfered);
      // после этой функции, в bufferTemplate1 содержаться данные

      //Сохраняю буфер bufferTemplate1 в файл Param1 + '.dat'
      FS := TFileStream.Create(Param1 + '.dat', fmCreate);
      FS.WriteBuffer(bufferTemplate1^, template1Length);
      FS.Free;
      FreeMem(bufferTemplate1);

данные из bufferTemplate1 записываются в файл. Мне надо чтобы к этим данным еще записывалась кое-какая информация, ну например имя "Вася", "Петя", и соответственно потом это дело загрузить в память обратно.
Делал через record, не получается:

Код:
 TTemplate = record
     Name: string[5];
     Template: PChar; // тут пробовал разные варианты, не помогает
   end;
var 
    tTempl : TTemplate;
    FS: TFileStream;
    pTemplate : pointer;
begin
     //Сохраняю шаблон в bufferTemplate1
      template1Length := Bsdk_Template_GetSize(pTemplate);
//   SetLength(tTempl.Template, '2696');
      GetMem(tTempl.Template, template1Length);
      result := Bsdk_Template_Save(pTemplate, tTempl.Template, template1Length, pTransfered);
      tTempl.name:= 'Вася';

      FS := TFileStream.Create('c:\temp\test.dat', fmCreate);
      FS.WriteBuffer(tTempl, SizeOf(TTemplate));
      FS.Free;
      FreeMem(tTempl.Template);
// записывается только 8-10 байт, хотя должно быть не менее 2696 байт
Ответить с цитированием