Na das geht doch schon mal mit den Fehlermeldungen, tut doch gar nicht weh
Um diesen Umwandlungsfehler zu umgehen, gibt es
StrToFloatDef
Weiterhin greifst du auf eine Zeile im Memo zu, die es nicht gibt.
Wenn i den Wert von
Memo1.Lines.Count - 1
hat, dann willst du aber auf
Memo1.Lines[ i + 1 ]
zugreifen und das geht nicht.
Also darfst du i nicht so hoch zählen lassen.
Bei einer vernünftigen Formatierung fällt das auch etwas schneller ins Auge.
Des Weiteren würde ich Memo2 auch vorher löschen und dann mit Add statt mit Insert arbeiten.
Um es richtig schön zu machen und die Performance zu steigern, unterbindet man auch noch das ständige Aktualisieren von Memo2
Delphi-Quellcode:
procedure TForm1.Differenz;
var
i : integer;
k: double; // doppel var kann man sich schenken
begin
k:=0;
Memo2.Lines.BeginUpdate;
try
Memo2.Lines.Clear;
for i:=0 to Memo1.Lines.Count - 2 do
begin
k := k + ( StrToFloatDef( Memo1.Lines[ i + 1 ], 0 ) - ( StrToFloatDef( Memo1.Lines[ i ], 0 ) ) );
Memo2.Lines.Add( FloatToStr( k ) );
end;
finally
Memo2.Lines.EndUpdate;
end;
end;