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?
Danke schonal im vorraus...Anna