AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TList generische Liste Fehler beim deklarieren RTTI
Thema durchsuchen
Ansicht
Themen-Optionen

TList generische Liste Fehler beim deklarieren RTTI

Ein Thema von H3llsing · begonnen am 11. Aug 2011 · letzter Beitrag vom 15. Aug 2011
Antwort Antwort
Seite 3 von 4     123 4      
H3llsing

Registriert seit: 12. Nov 2008
96 Beiträge
 
Delphi 2010 Enterprise
 
#21

AW: TList generische Liste Fehler beim deklarieren RTTI

  Alt 12. Aug 2011, 16:43
hmm warum meckert eigentlich die Umgebung bei

Delphi-Quellcode:
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;
Aber funktionieren tuts trotzdem!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#22

AW: TList generische Liste Fehler beim deklarieren RTTI

  Alt 12. Aug 2011, 16:48
Und wenn Du das Items weglässt?
FListe[0].Zuordnungsname 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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#23

AW: TList generische Liste Fehler beim deklarieren RTTI

  Alt 12. Aug 2011, 16:56
hmm warum meckert eigentlich die Umgebung bei

Delphi-Quellcode:
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;
Aber funktionieren tuts trotzdem!
Error Insight hat arge Probleme, was Generics angeht und unterkringelt da allerhand Blödsinn. Einfach ignorieren (oder wie ich ausschalten).
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
H3llsing

Registriert seit: 12. Nov 2008
96 Beiträge
 
Delphi 2010 Enterprise
 
#24

AW: TList generische Liste Fehler beim deklarieren

  Alt 15. Aug 2011, 10:03
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?

Ja, mit RTTI:
Delphi-Quellcode:
uses
  Rtti, TypInfo;

procedure PrintStuff(const Item: TMyRecord);
var
  ctx: TRttiContext;
  t: TRttiType;
  f: TRttiField;
  p: TRttiProperty;
begin
  t := ctx.GetType(TypeInfo(TMyRecord));
  if Assigned(t) then
  begin
    for f in t.GetFields do
    begin
      if f.Visibility in [mvPublic..mvPublished] then
        Writeln(f.Name + ' = ' + f.GetValue(@Item).ToString);
    end;

    for p in t.GetProperties do
    begin
      if p.Visibility in [mvPublic..mvPublished] then
        Writeln(p.Name + ' = ' + p.GetValue(@Item).ToString);
    end;
  end;
end;
Also welchen Pointer gibt man bei p.GetValue(@Item).ToString an ?

mit p.name komm ich zwar an die Propertienamen, jedoch nich an den Wert.
nagut p.name tuts auch schon =)

Geändert von H3llsing (15. Aug 2011 um 10:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#25

AW: TList generische Liste Fehler beim deklarieren RTTI

  Alt 15. Aug 2011, 10:26
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
H3llsing

Registriert seit: 12. Nov 2008
96 Beiträge
 
Delphi 2010 Enterprise
 
#26

AW: TList generische Liste Fehler beim deklarieren RTTI

  Alt 15. Aug 2011, 10:32
Vielen dank,
ich hab die klammern falsch gesetzt
p.GetValue(Tzuordnung.ToString)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#27

AW: TList generische Liste Fehler beim deklarieren RTTI

  Alt 15. Aug 2011, 10:34
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
H3llsing

Registriert seit: 12. Nov 2008
96 Beiträge
 
Delphi 2010 Enterprise
 
#28

AW: TList generische Liste Fehler beim deklarieren RTTI

  Alt 15. Aug 2011, 10:40
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;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#29

AW: TList generische Liste Fehler beim deklarieren RTTI

  Alt 15. Aug 2011, 10:47
Hast Du es mal mit self versucht?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
H3llsing

Registriert seit: 12. Nov 2008
96 Beiträge
 
Delphi 2010 Enterprise
 
#30

AW: TList generische Liste Fehler beim deklarieren RTTI

  Alt 15. Aug 2011, 10:52

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

Geändert von H3llsing (15. Aug 2011 um 12:38 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 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