Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TTest=Class array of TTest end (https://www.delphipraxis.net/109231-ttest%3Dclass-array-ttest-end.html)

busybyte 26. Feb 2008 17:05


TTest=Class array of TTest end
 
Mir ist langweilig und so habe ich gerade mal an die Treeview gedacht und folgendes Paradoxon überlegt.

Wäre doch irre, wenn das funktionieren würde.
Der Compiler meckert nicht mal(bei einem Record schon),aber
beim ersten Aufruf gibt's logischerweise eine EAccessViolation.

P.S. Mir ist schon klar,das ein Treeview mit Items aufgebaut ist,die weitere Items beinhalten (können).
Soll nur mal eine Überlegung zu Strukturen sein.
Ist wohl besser eine Art Class(TMyDNSTreenode) mit Var Mensch:array of TMenschVariant zu basteln. :sharkylinchen:
:kiss:

Blöder vergleich mit den Babies,was besseres fiel mir gerade nicht ein.
Bitte nicht ganz ernst nehmen!

Delphi-Quellcode:
Type
 TMensch=Class
 i:integer;
 Mensch:Array of TMensch;
 end;

Var Mensch:Array of TMensch;

procedure TForm1.Button1Click(Sender: TObject);
Var L1_,L2_,L3_,cnt1_,cnt2_,cnt3_:integer;
begin
L1_:=5;
L2_:=2;
L3_:=3;

Setlength(Mensch,L1_);   //grösse der Menschenmenge definieren
for cnt1_ := 0 to L1_ - 1 do
 begin
 Mensch[cnt1_].i:=10;
  Setlength(Mensch[cnt1_].Mensch,L2_); //Grösse MenschenMengeX in MenschX z.B. Babies
    for cnt2_ := 0 to L2_ - 1 do
     begin
     Mensch[cnt1_].Mensch[cnt2_].i:=11;
     Setlength(Mensch[cnt1_].Mensch[cnt2_].Mensch,L3_); //wenn Babies als Baby schwanger werden könnten
         for cnt3_ := 0 to L3_ - 1 do
          begin
          Mensch[cnt1_].Mensch[cnt2_].Mensch[cnt3_].i:=12;
//    ... usw.
          end;
     end;
  end;
end;

end.
Fazit:
//EDIT
Bei schwangeren Babies vom Typ TMensch mit Mutter TMensch gibt es eine EAccessviolation in der Umgebung,logisch oder? (Q.E.D)
//Bug wiederlegte meine These:Die Violation wurde durch das fehlende Mensch[cnt1_]:=TMensch.Create; verursachtt.
P.P.S. Ich suche immer noch nach dem Bug in meinem Leben,z.B. habe ich immer noch einen
buffer-underrun in meiner Finanzroutine. :dancer2:

mkinzler 26. Feb 2008 17:15

Re: TTest=Class array of TTest end
 
Delphi-Quellcode:
type
  TMensch= class;

  TMensch=Class
    i:integer;
    Mensch:Array of TMensch;
end;

busybyte 26. Feb 2008 17:21

Re: TTest=Class array of TTest end
 
@mkinzler
Delphi-Quellcode:
type
  TMensch= class;

  TMensch=Class
    i:integer;
    Mensch:Array of TMensch;
end;
So geht's leider auch nicht,aber klingt logischer als mein erster Versuch,Danke trotzdem!

BUG 26. Feb 2008 17:29

Re: TTest=Class array of TTest end
 
Das du jedes TMensch-Objekt selbst erzeugen/freigeben musst, ist dir klar, oder?
Also:
Delphi-Quellcode:
var mensch: TMensch;
//...
mensch := TMensch.create;
// tue etwas mit dem Mensch ...
mensch.free;
MfG,
Bug

busybyte 26. Feb 2008 17:37

Re: TTest=Class array of TTest end
 
@BUG
Hehe "patsch", an die Stirn klopf.
Du hast recht,hatte vergessen, das ich für alle Klassen einen Konstruktor aufrufen muss,Danke!.

P.S. hast Du vieleicht auch die Lösung für meine Finanzroutine? :cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 Uhr.

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