Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Stream (https://www.delphipraxis.net/86440-stream.html)

SaFu 14. Feb 2007 10:33


Stream
 
Hi :hi:
Habe ein Problem mit meinem Stream irgendwie nimmt er nicht das Speichern meiner Cellen an kann mir einer sagen wo ich einen Fehler habe.

Memos und Label funktionieren wunderbar.

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.WriteBuffer(row, SizeOf(Word));
    FileStream.WriteBuffer(col, SizeOf(Word));

    for x:= 1 to row do
      for y:= 1 to col do

        buff:= StringGrid1.Cells[y,x];
        len:= length(buff);

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


  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;
Danke sascha

TonyR 14. Feb 2007 11:21

Re: Stream
 
Ist es richtig das bei deinen for-Schleifen keinerlei begins und ends zu sehen sind? :gruebel:

Delphi-Quellcode:
for x:= 1 to row do
      for y:= 1 to col do

        buff:= StringGrid1.Cells[y,x];
        len:= length(buff);

  FileStream.WriteBuffer(len, SizeOf(Word));
  FileStream.WriteBuffer(buff[1], len);
Vielleicht so?
Delphi-Quellcode:
for x:= 1 to row do
  for y:= 1 to col do
    begin
    buff:= StringGrid1.Cells[y,x];
    len:= length(buff);
    FileStream.WriteBuffer(len, SizeOf(Word));
    FileStream.WriteBuffer(buff[1], len);
    end;

SaFu 14. Feb 2007 11:27

Re: Stream
 
Stimmt hatte ich vergessen

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

        FileStream.WriteBuffer(len, SizeOf(Word));
        FileStream.WriteBuffer(buff[1], len);
       end;
.
.
.
.
.
.
end;
Aber jetzt werden nicht mehr die Labels und Memos gespeicher

TonyR 14. Feb 2007 11:31

Re: Stream
 
dann hast du noch was anderes jetzt beim korrigieren vermehrt!
Denn das Speichern deiner Memos und Labels hat ja eigentlich überhaupt nichts mit der Schleife zu tun, oder etwa doch??? :gruebel:

SaFu 14. Feb 2007 11:32

Re: Stream
 
Ich möchte alle memos und Labels sowie das StringGrid in eine .txt speichern

TonyR 14. Feb 2007 11:39

Re: Stream
 
Ich weis doch!!! Du scheinst mich nicht verstanden zu haben...
Ich kenn mich mit den Streams abspeichern jetzt nicht hundert pro aus aber rein von der Logik muss das Abspeichern der labels und Memos jetzt auch noch gehen (weil vorher gings ja auch... hast du jedenfalls gesagt).
Und geändert hast du ja nur was and er Schleife und die hat doch mit dem eigentlichen Abspeichern der Labels und Memos nichts zu tun!? Die ist doch bloß für das Abspeichern des StringGrids da!?

Vielleicht machst du ja ein Fehler beim Auslesen? Oder klappt das Schreiben schon nicht? (Exception?)

SaFu 14. Feb 2007 16:08

Re: Stream
 
Hi hatte wirklich nur das begin und end vergessen :wall: :wall:

Habe jetzt aber ein anderes Problem

Irgendwas stimmt beim laden oder Speichern meines Streams nicht, beim Speichern wird alles sauber in meine .txt gespeichert auch lesbar also schließe ich den Fehler beim Speichern aus, beim laden werden alle Daten des StringGrids auch sauber geladen nur die Memos und Labels erhalten nur ein schwarzen strich woran könnte das liegen.

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:= 1 to row do
      for y:= 1 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:= 1 to row do
   for y:= 1 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;

Phoenix 14. Feb 2007 17:07

Re: Stream
 
Zitat:

Zitat von fuknersascha
Habe jetzt aber ein anderes Problem

Und damit machst Du bitte einen anderen Thread auf.

Ganz gemäß unseres Kodex "Neue Frage -> Neuer Thread" :zwinker:

- = C L O S E D = -


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz