Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   2 Units zusammenfassen in eine Untergeordnete Logikschicht (https://www.delphipraxis.net/165276-2-units-zusammenfassen-eine-untergeordnete-logikschicht.html)

Impulz 21. Dez 2011 13:52

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht
 
ok also könnte das so aussehen das ich vllt die kundenklasse im create veränder? und noch Buch name usw deklariere?

DeddyH 21. Dez 2011 13:55

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht
 
Das TKunde-Objekt benötigt in dem Fall eine TBuchliste-Property. Pseudocode:
Delphi-Quellcode:
procedure TKunde.GetBuecher;
begin
  Buchliste.SetFilter('Kunden_ID', ID);
  Buchliste.HoleDaten;
end;

haentschman 21. Dez 2011 20:16

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht
 
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 :stupid:

Impulz 22. Dez 2011 06:42

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht
 
Vielen Dank, werde mein Code nochmal ausbessern.

@DeddyH ich mach mich gleich mal ran an das umbauen
@haentschman vielen dank, programmiere halt nicht so lange, was ich kann hab ich mir auch selbst beigebracht... desswegen mangelt es an Qualität xD
werde es mir aber zu herzen nehmen und gleich ausbessern.

Impulz 22. Dez 2011 07:58

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht
 
also ich krieg das irgendwie mit dem FastLeakMemoryon... nicht hin.
Habe FastMM4 mir gerade geholt und das als erste unit in mein Projekt eingebunden.
dann bin ich auf meine oberfläche und habe fastmm4 in uses teil gebracht.

aber das fastleakmemoryon das kennts nich
und jetzt?

haentschman 22. Dez 2011 08:05

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht
 
Das meinte ich nicht. FastMM ist in D2007 enthalten. Öffne den Quelltext deiner Projektdatei. Dann fügst du folgendes ein:
Delphi-Quellcode:
{$R *.res}

begin
  ReportMemoryLeaksOnShutdown:= True; // das einfügen
  Application.Initialize; // hier davor
  Application.MainFormOnTaskbar := True;
.
.
.

Impulz 22. Dez 2011 08:14

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht
 
ok habs ;) danke

haentschman 22. Dez 2011 08:18

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht
 
...und wie lang ist die Liste ? :lol: Erst wenn du das Fenster beim Programm beeenden nicht mehr bekommst ist alles gut.

DeddyH 22. Dez 2011 08:36

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht
 
Ich bin ehrlich verwirrt. Von welcher Delphi-Version reden wir denn eigentlich, D5, D7 oder D2007?

Impulz 22. Dez 2011 08:43

AW: 2 Units zusammenfassen in eine Untergeordnete Logikschicht
 
wir reden von D7 :D


4908 Bytes Leck OHNE EINloggen^^ also sprich wenn ich das prog schon vor dem einloggen schließe.. (keine kunden hinzugefügt usw) ^^



jetzt aber mal zum ursprünglichen thema..

ich habe ja UKunde UBuecher usw...

und wenn ich das machen würde wie du es sagst DeddyH dann würde das nicht mehr ganz hinkommen:
ich müsste ja prozeduren machen wie: TKunde.getbuecher und TBuch.getKunden... da komme ich schnell in kreisreferenzen....
ich baue jetzt ein Logisches Objekt:

BSP LogischerKunde... dann getbuecher usw da rein... und der Tkunde greift auf den LogikKunden zu..
was haltet ihr davon?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:12 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz