Einzelnen Beitrag anzeigen

Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#1

Probleme beim Stream Laden

  Alt 14. Feb 2007, 18:32
Hi

Irgendwas stimmt beim laden meines Streams nicht, beim Speichern wird alles sauber gespeichert beim laden werden alle Daten des StringGrids auch sauber geladen nur die Memos und Labels erhalten nur nicht mach ich was falsch in der Reihenfolge??.

Hab mal bilder angehängt mit der eingabe und was beim laden raus kommt.


Stream Speichern

Delphi-Quellcode:
 {Stream Speichern} 
procedure TForm7.memospeichern;
var FileStream: TMemoryStream;
    memos :TFileName;
    x, y, row, col,len :Word;
    a,c,e,g,i,k,m,o,q,s :String;
    b,d,f,h,j,l,n,p,r,t :integer;
begin
  a:= Memo1.Text; b:=Length(a);
  c:= Memo2.Text; d:=Length(c);
  e:= Memo3.Text; f:=Length(e);
  g:= Memo4.Text; h:=Length(g);
  i:= Memo5.Text; j:=Length(i);
  k:= Memo6.Text; l:=Length(k);
  m:= Label8.Caption; n:=Length(m);
  o:= Label10.Caption; p:=Length(o);
  q:= Label3.Caption; r:=Length(q);
  s:= Label1.Caption; t:=Length(s);

  FileStream:= TMemoryStream.Create;

    col:= StringGrid1.ColCount -1;
    row:= StringGrid1.RowCount -1;

    FileStream.Write(row, SizeOf(Word));
    FileStream.Write(col, SizeOf(Word));

    for x:= 0 to row do
      for y:= 0 to col do
       begin
        buff:= StringGrid1.Cells[y,x];
        len:= length(buff);

        FileStream.Write(len, SizeOf(Word));
        FileStream.Write(buff[1], len);
       end;

  FileStream.Write(b, SizeOf(Integer)); // Memo1
  FileStream.Write(a[1], b);

  FileStream.Write(d, SizeOf(Integer)); // Memo2
  FileStream.Write(c[1], d);

  FileStream.Write(f, SizeOf(Integer)); // Memo3
  FileStream.Write(e[1], f);

  FileStream.Write(h, SizeOf(Integer)); // Memo4
  FileStream.Write(g[1], h);

  FileStream.Write(j, SizeOf(Integer)); // Memo5
  FileStream.Write(i[1], j);

  FileStream.Write(l, SizeOf(Integer)); // Memo6
  FileStream.Write(k[1], l);

  FileStream.Write(n, SizeOf(Integer)); // Label8
  FileStream.Write(m[1], n);

  FileStream.Write(p, SizeOf(Integer)); // Label10
  FileStream.Write(o[1], p);

  FileStream.Write(r, SizeOf(Integer)); // Label3
  FileStream.Write(q[1], r);

  FileStream.Write(t, SizeOf(Integer)); // Label1
  FileStream.Write(s[1], t);

  memos:= ExtractFilePath(ParamStr(0))+'Bemerkungen\'+ ComboBox4.Text+'.txt';
  FileStream.SaveToFile(memos);
  FileStream.Free;
end;
Stream Laden

Delphi-Quellcode:
 {Stream Laden} 
procedure TForm7.memoladen;
var x, y, row, col,len :Word;
  memos :TFileName;
  FileStream :TMemoryStream;
  i,l :Integer;
  s :String;
begin
  FileStream := TMemoryStream.Create;
  memos:=ExtractFilePath(ParamStr(0))+'Bemerkungen\'+ ComboBox3.Text+'.txt';
  FileStream.LoadFromFile(memos);

  FileStream.Read(row, SizeOf(Word));
  FileStream.Read(col, SizeOf(Word));

  for x:= 0 to row do
   for y:= 0 to col do
    begin
     FileStream.Read(len, SizeOf(Word));
     SetLength(buff, len);
     FileStream.Read(buff[1], len);
     StringGrid1.Cells[y,x]:= buff;
    end;
  
  l := 0;
  FileStream.Position:=0;

  for i := 1 to 10 do
  begin
    FileStream.Read(l, SizeOf(Integer));
    setlength(s, l); // legt die Länge einer String- Variable fest
    FileStream.Read(s[1], l);

    case i of
      1: Memo1.Text:= s;
      2: Memo2.Text:= s;
      3: Memo3.Text:= s;
      4: Memo4.Text:= s;
      5: Memo5.Text:= s;
      6: Memo6.Text:= s;
      7: Label8.Caption:= s;
      8: Label10.Caption:= s;
      9: Label3.Caption:= s;
     10: Label1.Caption:= s;
    end;

  end;
  FileStream.Free;
end;
Miniaturansicht angehängter Grafiken
nachher_129.jpg  
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat