Hallo,
also was Du wirklich brauchst ist zunächst mal ein Grundkurs Quelltextformatierung. Eigentlich sollte unter einem solchen Quelltextpost ein Warnhinweis "Vermeiden Sie ein längeres Betrachten dieses Quellcodes, dies kann zu Augenkrebs, sowie anderen irreparablen Schäden oder schwerwiegenden Beeinträchtigungen Ihres Sehvermögens führen." stehen.
Gewöhn Dir dringend eine ordentliche Formatierung an!
Weiterhin: Was sollen die Funktionen:
- Xls_To_StringGrid
- Xls_To_StringGrid1
- SaveAsExcelFile
- SaveAsExcelFile1
im Code, wenn sie doch nicht genutzt werden?
Dein Problem liegt wohl hier
Delphi-Quellcode:
procedure TForm7.Button3Click(Sender: TObject);
begin
form1.eltreestringgrid1.cells[0,form1.ElTreeStringGrid1.Row]:=edit5.text;
try
FIrgendwas1.ErsteZahl1AsString := edit7.Text;
// <-- wo zum Henker wird den die Eigenschaft FIrgendwas1 instanziiert? Hol es nach und es funktioniert
try
FIrgendwas1.ZweiteZahl1AsString := edit9.text;
ModalResult := mrOK;
except
on E:
Exception do
begin
MessageBox(0, PChar(E.
Message),
nil, MB_OK
or MB_ICONERROR);
edit9.SetFocus;
edit9.SelectAll;
end;
end;
except
on E:
Exception do
begin
MessageBox(0, PChar(E.
Message),
nil, MB_OK
or MB_ICONERROR);
edit7.SetFocus;
edit7.SelectAll;
end;
end;
end;
Da scheppert es dann auch, wenn Du auf den Button klickst und das Form sich über mrOK verabschiedet.
Weiter scheppern wird es dann
Delphi-Quellcode:
if Form7.Showmodal = mrOK then //diese Zeile wird blau markiert
begin
FObjects1.Add(Form7.Irgendwas1);
FGesamt1 := FGesamt1 + Form7.Irgendwas1.Summe1;
eltreestringgrid1.Cells[3, eltreestringgrid1.Row] := Form7.Irgendwas1.ErsteZahl1AsString + ' €';
eltreestringgrid1.cells[4, eltreestringgrid1.Row] := form7.Irgendwas1.ZweiteZahl1AsString + ' €';
eltreestringgrid1.Cells[4, eltreestringgrid1.Row] := Format('%.2n €', [FGesamt]);
eltreestringgrid1.Cells[4, eltreestringgrid1.Row-1]:=form1.eltreestringgrid1.Cells[4,form1.eltreestringgrid1.Row-1]+' €';
eltreestringgrid1.RowCount := eltreestringgrid1.RowCount + 1;
eltreestringgrid1.Row := eltreestringgrid1.Row + 1;
FObjects.Add(Form7.Irgendwas);
FGesamt := FGesamt + Form7.Irgendwas.Summe; // <-- hier, weil in FormCloseQuery freigegeben und zur Sicherheit nochmals in FormClose
eltreestringgrid1.Cells[2, eltreestringgrid1.Row] := Form7.Irgendwas.ErsteZahlAsString + ' €';
eltreestringgrid1.cells[4, eltreestringgrid1.Row] := form7.Irgendwas.ZweiteZahlAsString + ' €';
eltreestringgrid1.Cells[4, eltreestringgrid1.Row] := Format('%.2n €', [FGesamt]);
eltreestringgrid1.Cells[4, eltreestringgrid1.Row-1]:=form1.eltreestringgrid1.Cells[4,form1.eltreestringgrid1.Row-1]+' €';
eltreestringgrid1.RowCount := eltreestringgrid1.RowCount + 1;
eltreestringgrid1.Row := eltreestringgrid1.Row + 1;
end;
end;
Verstehe es bitte nicht falsch, ich bin immer dafür keine Memoryleaks zu hinterlassen, aber ein FreeAndNil in FormCloseQuery, FormClose und FormDestroy ist ein klein wenig übertrieben.
Ich hoffe es hilft Dir etwas weiter und ich bin ab morgen nicht mit Blindheit geschlagen
Gruß