AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stream

Ein Thema von SaFu · begonnen am 14. Feb 2007 · letzter Beitrag vom 14. Feb 2007
Thema geschlossen
Benutzerbild von SaFu
SaFu

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

Stream

  Alt 14. Feb 2007, 10:33
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
"... 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?"
 
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Stream

  Alt 14. Feb 2007, 11:21
Ist es richtig das bei deinen for-Schleifen keinerlei begins und ends zu sehen sind?

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;
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
 
Benutzerbild von SaFu
SaFu

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

Re: Stream

  Alt 14. Feb 2007, 11:27
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
"... 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?"
 
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Stream

  Alt 14. Feb 2007, 11:31
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???
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
 
Benutzerbild von SaFu
SaFu

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

Re: Stream

  Alt 14. Feb 2007, 11:32
Ich möchte alle memos und Labels sowie das StringGrid in eine .txt speichern
"... 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?"
 
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Stream

  Alt 14. Feb 2007, 11:39
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?)
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
 
Benutzerbild von SaFu
SaFu

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

Re: Stream

  Alt 14. Feb 2007, 16:08
Hi hatte wirklich nur das begin und end vergessen

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;
"... 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?"
 
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.608 Beiträge
 
#8

Re: Stream

  Alt 14. Feb 2007, 17:07
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"

- = C L O S E D = -
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
 
Thema geschlossen


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 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