Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   problem beim zeichnen nach öffnen der datei (https://www.delphipraxis.net/93270-problem-beim-zeichnen-nach-oeffnen-der-datei.html)

punker-lili 3. Jun 2007 16:26


problem beim zeichnen nach öffnen der datei
 
Ich habe ein Programm geschrieben, welches eine Sinuskurve zeichnet.
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  ko:=0;
  repeat
    with image1.canvas do begin
      Pen.Width:=1;
      Pen.Color:=clwhite;
      moveto(0,ko);
      Lineto(image1.Width,ko);
    end;
    ko:=ko+1;
  until ko=image1.Height;
  for i:=1 to 7 do
    if StringGrid1.Cells[1,i]='' then
       if i=6 then
        StringGrid1.Cells[1,i]:='N'
       else StringGrid1.Cells[1,i]:='0';


  ks:=StringGrid1.Cells[1,1];
  k:=strtofloat(ks);
  k:=k;
  ls:=StringGrid1.Cells[1,2];
  l:=strtofloat(ls);
  l:=l;
  ms:=StringGrid1.Cells[1,3];
  m:=strtofloat(ms);
  m:=m;
  ns:=StringGrid1.Cells[1,4];
  n:=strtofloat(ns);
  n:=n*10;
  os:=StringGrid1.Cells[1,5];
  o:=strtofloat(os);
  with image1.canvas do begin
    pen.Color:=clblack;
    MoveTo(0,image1.Height div 2);
    LineTo(image1.Width,image1.Height div 2);
    MoveTo(33,0);
    LineTo(33,image1.Height);
  end;
  x:=1;
  a:=image1.Height div 2;
  repeat
    with image1.canvas do begin
      moveto (x,a);
      y:=(10*l*SIN(0.1*k*x+m))-n+image1.Height div 2;
      x:=x+1;
      a:=trunc(y);
      LineTo(x,a);
    end;

  until x=500;
  image1.Canvas.MoveTo(0,image1.Height div 2);
  image1.Canvas.lineto(image1.Width,image1.Height div 2);
  s:=floattostr(pi);
  StringGrid1.Cells[1,5]:=s;


end;
Das ist bloß eingrober entwurf...
Nun habe ich passend dazu ein Speichern und Öffnen Funktion geschrieben, welche den Inhalt des Stringgrids speichern bzw.öffnen soll.
Delphi-Quellcode:
procedure TForm1.ffnen1Click(Sender: TObject);
var
  F: TStringList;
  i,j: Integer;
  h: string;
begin
  if not opendialog1.execute then exit;
  F := TStringList.Create;
  with StringGrid1 do
   try
   begin
      F.LoadFromFile(OpenDialog1.FileName);
      RowCount := StrToInt(F[0]);                 // Zeilen
      ColCount := StrToInt(F[1]);                 // Spalten
      Edit1.Text := F[1];
      Edit2.Text := F[0];
      for i := 0 to (RowCount - 1) do // Zeilen M1
        Rows[i].CommaText := F[i+2];
   end;
    finally
        FreeAndNil(F);
end;
end;
procedure TForm1.Speichern1Click(Sender: TObject);
var F: TStringList;                                // File of StringList
    i: Integer;
begin
  if not saveDialog1.execute then exit;
  F := TStringList.Create;                     // Objekt erzeugen
        try
          with Form1.StringGrid1 do
          begin

              F.Add(IntToStr(RowCount));     // Zeilenzahl M1 merken
              F.Add(IntToStr(ColCount));     // Spaltenzahl M1 merken
              for i := 0 to (RowCount - 1) do // M1 zeilenweise
                F.Add(Rows[i].CommaText);    // Zeile als ein durch , getr.Str.
              F.SaveToFile(savedialog1.FileName);        // Str.List speichern
              sicher:=true;
          end;
  finally
    FreeAndNil(F)

end;
end;
wenn ich nun den Inhalt des Stringgrids über diese Funktion speichere und dann wieder öffne, zeigt er mir zwar die gepeicherten Werte im StringGrid an, aber wenn er die dazugehörige Funktion zeichnen soll kommt folgende Fehlermeldung "'' is not a valid floating point value".
Wie kann ich das beheben?
Wo liegt der Fehler? :gruebel:

Danke schonal im vorraus...Anna

Bernhard Geyer 3. Jun 2007 16:41

Re: problem beim zeichnen nach öffnen der datei
 
Der Fehler sagt doch schon alles. Der Text '' ist nunmal keine Zahl.

Ersetze

Delphi-Quellcode:
StrToInt(F[0])
durch

Delphi-Quellcode:
StrToIntDef(F[0], 0)
dann klappts auch mit leeren Strings.

punker-lili 3. Jun 2007 18:23

Re: problem beim zeichnen nach öffnen der datei
 
danke! :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:01 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