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
H3llsing

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

TList generische Liste Fehler beim deklarieren RTTI

  Alt 11. Aug 2011, 12:46
Moin zusammen,

ich komm einfach nich drauf was ich falsch mache.

Hintergrund: ich habe ein Array of Record, dieses möchte ich gern in einer procedure durchlaufen also

myRec[0].eigenschaft1
myRec[0].eigenschaft2
...

Nun bin ich durch längere Suche auf die generischen Tlist gestoßen.

Allerdings bekomm ich einen Compilerfehler :/

Delphi-Quellcode:
uses Classes;
...
type
  TZuordnung = record
  Zuorndungsname :string;
  trennzeichen :string;
  Zuordnungsdatei :string;
  distributor :string;
  ...
end;
type Tar_Zuordnung = array of Tzuordnung;
type TlstZuordnung = Tlist<TZuordnung>; //compiler wirft Fehler raus: "undeklarierter Bezeichner 'Tlist' '1' in Zeile..."

end;
Was mach ich also falsch ?!

verwende Delphi2010

VIELEN dank hab ich bei der suche nirgens gefunden =)

Geändert von H3llsing (11. Aug 2011 um 15:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: TList generische Liste Fehler beim deklarieren

  Alt 11. Aug 2011, 12:49
Delphi-Quellcode:
uses Classes;
...
Was mach ich also falsch ?!

verwende Delphi2010
Das hier:

Delphi-Quellcode:
uses
Generics.Collections, Generics.Defaults;
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: TList generische Liste Fehler beim deklarieren

  Alt 11. Aug 2011, 13:12
Wenn du eh schon ein array hast, warum das nicht an die Prozedur übergeben?
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
 
#4

AW: TList generische Liste Fehler beim deklarieren

  Alt 11. Aug 2011, 13:45
ich frage mich grade ob das überhaupt möglich ist mit der Tlist was ich vorhabe.

Zitat:
Hintergrund: ich habe ein Array of Record, dieses möchte ich gern in einer procedure durchlaufen also

myRec[0].eigenschaft1
myRec[0].eigenschaft2
kann ich mir alle eigenschaften von myRec[0] anzeigen lassen ?

sowas in der art:
Delphi-Quellcode:
//PSEUDO-Code
for i:=0 to myRec[0].countPropertys -1 do
property := Myrec[0][i]; // gibt eigenschaft 1 dann 2 dann 3 etc aus
ist das mit dem Array oder mit der Tlist erreichbar ?
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: TList generische Liste Fehler beim deklarieren

  Alt 11. Aug 2011, 14:56
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;
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
 
#6

AW: TList generische Liste Fehler beim deklarieren

  Alt 11. Aug 2011, 15:18
Vielen Dank @Stevie

Genau sowas habe ich Gesucht!
Funktioniert einwandfrei =)
  Mit Zitat antworten Zitat
H3llsing

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

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
Antwort Antwort


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 02:48 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