![]() |
problem beim zeichnen nach öffnen der datei
Ich habe ein Programm geschrieben, welches eine Sinuskurve zeichnet.
Delphi-Quellcode:
Das ist bloß eingrober entwurf...
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; Nun habe ich passend dazu ein Speichern und Öffnen Funktion geschrieben, welche den Inhalt des Stringgrids speichern bzw.öffnen soll.
Delphi-Quellcode:
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".
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; Wie kann ich das beheben? Wo liegt der Fehler? :gruebel: Danke schonal im vorraus...Anna |
Re: problem beim zeichnen nach öffnen der datei
Der Fehler sagt doch schon alles. Der Text '' ist nunmal keine Zahl.
Ersetze
Delphi-Quellcode:
durch
StrToInt(F[0])
Delphi-Quellcode:
dann klappts auch mit leeren Strings.
StrToIntDef(F[0], 0)
|
Re: problem beim zeichnen nach öffnen der datei
danke! :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz