Einzelnen Beitrag anzeigen

Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#15

AW: Brauch mal Hilfe bei Tobjectlist

  Alt 10. Mär 2013, 02:29
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ß
Volker Zeller

Geändert von Volker Z. (10. Mär 2013 um 02:37 Uhr)
  Mit Zitat antworten Zitat