![]() |
AW: TList generische Liste Fehler beim deklarieren RTTI
hmm warum meckert eigentlich die Umgebung bei
Delphi-Quellcode:
Aber funktionieren tuts trotzdem!
var
Zuordnung: TZuordnung; begin Zuordnung := TZuordnung.Create('ALSO'); FListe.Add(Zuordnung); JvComboBox_zuordnung.Clear; JvComboBox_zuordnung.Items.Add(Fliste.Items[0].zuordnungsname); // zuordnungsname ist nicht deklarierter bezeichner end; |
AW: TList generische Liste Fehler beim deklarieren RTTI
Und wenn Du das Items weglässt?
Delphi-Quellcode:
Ansonsten einfach ignorieren, das wird wohl mal wieder Error Insight sein. Evtl. ist der Effekt weg, wenn Du das Projekt anschließend schließt und neu öffnest.
FListe[0].Zuordnungsname
|
AW: TList generische Liste Fehler beim deklarieren RTTI
Zitat:
|
AW: TList generische Liste Fehler beim deklarieren
Ein Problem hab ich nun noch mit der klasse.
Wie bekomme ich denn so wie beim Array mit RTTI alle Feldnamen? Also bei meiner Klasse die ganzen Properties? Zitat:
Delphi-Quellcode:
an ?
p.GetValue(@Item).ToString
mit p.name komm ich zwar an die Propertienamen, jedoch nich an den Wert. nagut p.name tuts auch schon =) |
AW: TList generische Liste Fehler beim deklarieren RTTI
Es steht ja beinahe schon da. Trotzdem hier noch ein Beispiel mit einer Klasse statt eines Records (Code von Stevie weitestgehend übernommen, ein Button und ein Memo auf dem Formular):
Delphi-Quellcode:
uses RTTI, TypInfo;
type TTestClass = class private FSomeString: string; FSomeInteger: integer; FSomeDouble: double; public property SomeString: string read FSomeString write FSomeString; property SomeInteger: integer read FSomeInteger write FSomeInteger; property SomeDouble: double read FSomeDouble write FSomeDouble; end; procedure TForm1.Button1Click(Sender: TObject); var Test: TTestClass; ctx: TRttiContext; t: TRttiType; p: TRttiProperty; begin Test := TTestClass.Create; try Test.SomeString := 'Hallo Welt'; Test.SomeInteger := 42; Test.SomeDouble := Pi; t := ctx.GetType(TypeInfo(TTestClass)); if Assigned(t) then for p in t.GetProperties do begin if p.Visibility in [mvPublic..mvPublished] then Memo1.Lines.Add(p.Name + ' = ' + p.GetValue(Test).ToString); end; finally Test.Free; end; end; |
AW: TList generische Liste Fehler beim deklarieren RTTI
Vielen dank,
ich hab die klammern falsch gesetzt :(
Delphi-Quellcode:
p.GetValue(Tzuordnung.ToString)
|
AW: TList generische Liste Fehler beim deklarieren RTTI
Ist das eine class property? Sonst wäre TZuordnung vermutlich falsch, sondern es muss Zuordnung heißen, der Wert steht ja in der Eigenschaft der Instanz und nicht der Klasse.
|
AW: TList generische Liste Fehler beim deklarieren RTTI
nein ist keine Klassen-Property also Instanz.
Aber das ganze ist eine Procedure der Klasse Tzuordnung und ich möchte auf die momentane Instanz zugreifen. mit Tzuordnung krachts beim 2ten durchlauf und bei Zuordnung sagt er undefinierter bezeichner Hier die Procedure Sie fügt die bereits gesetzten Verbidungen aus der DB in die Tvs als Unterknoten ein.
Delphi-Quellcode:
procedure TZuordnung.ladeVerbindungen(TV_ZO,TV_DB:ttreeview);
var MyIterator : TStringDivideIterator; i: Integer; ctx: TRttiContext; t: TRttiType; f: TRttiField; p: TRttiProperty; ParentNode : Ttreenode; CNode : Ttreenode; ndx :integer; begin ndx := 0; ParentNode := TV_DB.Items.GetFirstNode; t := ctx.GetType(TypeInfo(Tzuordnung)); if Assigned(t) then begin for p in t.GetProperties do begin if p.Visibility in [mvPublic..mvPublished] then begin MyIterator := TStringDivideIterator.Create; try MyIterator.Pattern := ';'; MyIterator.Text := p.GetValue(Tzuordnung).ToString; While MyIterator.MoveNext do begin if(ndx > 3)then begin CNode := TV_DB.Items.AddChildObject(ParentNode,MyIterator.CurrentStr,nil); CNode.ImageIndex := -1; CNode.SelectedIndex := -1; //hier noch andern baum adden for i:=0 to TV_ZO.items.count-1 do if TV_ZO.Items.Item[i].Text=MyIterator.CurrentStr then begin CNode := TV_ZO.Items.AddChildObject(TV_ZO.Items.Item[i],ParentNode.Text,nil); CNode.ImageIndex:=-1; CNode.SelectedIndex := -1; CNode.Parent.ImageIndex := 1; end; ParentNode.ImageIndex := 1; ParentNode.SelectedIndex := 2; end; end; if(ndx > 3)then ParentNode := ParentNode.getNextSibling; finally MyIterator.Free; end; inc(ndx); end; end; end; TV_ZO.FullExpand; TV_db.FullExpand; end; |
AW: TList generische Liste Fehler beim deklarieren RTTI
Hast Du es mal mit self versucht?
|
AW: TList generische Liste Fehler beim deklarieren RTTI
:wall:
ja danke.. ich glaub es ist manchmal besser wenn man sich nur auf 1 Projekt konzentriert. Dann versucht mans nicht mit THIS und wundert sich warums nich geht in delphi ;D Vielen Dank nochmal an euch beide! Habt mir sehr geholfen mit dem Umgang von Klassen in Delphi! Das zeigt wiedermal was für nette Comunity das hier doch ist =D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz