Показать сообщение отдельно
  #5  
Старый 08.07.2011, 01:55
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

lmikle что то вроде этого?

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  fs: TFileStream;
  pl: PMyList;
  l: Integer;
  s: String;
  b: Boolean;
begin
  if OpenDialog1.Execute then begin
    FormDestroy (Sender);

    fs := TFileStream.Create (OpenDialog1.FileName, fmOpenRead);

    while fs.Position < fs.Size do begin
      fs.ReadBuffer (l, SizeOf(l));
      SetLength (s, l);
      fs.ReadBuffer (Pointer(s)^, l);
      fs.ReadBuffer (b, SizeOf(b));

      New (pl);
      pl.obj := s;
      pl.buffer := b;

      if List = nil then begin
        pl.rnext := nil;
        pl.lnext := nil;
        pl.root := pl;
      end
      else begin
        pl.rnext := nil;
        pl.lnext := List;
        pl.root := List.root;
        List.rnext := pl;
      end;
      List := pl;
    end;

    fs.Free;

    LoadListToForm;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  fs: TFileStream;
  pl: PMyList;
  l: Integer;
  s: String;
  b: Boolean;
begin
  if SaveDialog1.Execute then begin
    fs := TFileStream.Create (SaveDialog1.FileName, fmCreate);

    pl := List.root;
    while pl <> nil do begin
      s := pl.obj;
      l := Length (s);
      b := pl.buffer;
      fs.WriteBuffer (l, SizeOf(l));
      fs.WriteBuffer (Pointer(s)^, l);
      fs.WriteBuffer (b, SizeOf(b));
      pl := pl.rnext;
    end;

    fs.Free;
  end;
end;
Ответить с цитированием