Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#13

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht

  Alt 21. Dez 2011, 20:16
Hallo...

unabhängig von deiner Frage sind mir ein paar Sachen aufgefallen...
Beispiel für mehrere Stellen:
Delphi-Quellcode:
function TDataconnect.getKunden():TKundeList;
var
   Kunde : TKunde;
   KundeQuery : TIBOQuery;
   KundeTransa : TIBOTransaction;
begin
  Result:= TKundeList.create(); // wird als Result erzeugt... wo gibst du die Liste wieder frei ? --> Speicherleck. Objekt als Rückgabewert ist immer schwierig... Nur mit dirty Tricks.
  KundeQuery:= TIBOQuery.Create(nil); // Wo gibst du die Query frei ? --> Speicherleck
  KundeQuery.SQL.Text:= 'SELECT * FROM KUNDEN ';
  KundeQuery.IB_Connection:= FDataBase;
  KundeTransa:= TIBOTRansaction.Create(nil);
  KundeTransa.IB_Connection:= FDataBase;
  KundeQuery.IB_Transaction:= KundeTransa;
  KundeTransa.StartTransaction(); // warum läßt du ein select Statment in einer Transaktion ablaufen ?
  try
    KundeQuery.Open();
    while not KundeQuery.Eof do
    begin
     kunde:= TKunde.Create(KundeQuery.Fieldbyname('Kunden_ID').asInteger,
                            KundeQuery.FieldbyName('Vorname').asString,
                            KundeQuery.FieldbyName('nachname').AsString);
      Result.addkunde(Kunde);
      KundeQuery.Next();
    end;
    KundeTransa.Commit(); // Was gibt es nach dem Durchlaufen der Query zu committen ?
  except
    on e:Exception do
    begin
      ShowMessage('FEHLER IN GETKUNDEN');
      KundeTransa.Rollback(); // entsprechend dem Commit...
    end;
  end;
end;
PS: Mach mal ReportMemoryLeaksOnShutdown an... aber erschrick nicht

Geändert von haentschman (22. Dez 2011 um 08:19 Uhr)
  Mit Zitat antworten Zitat