Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Objeckte mit einem Integer assoziieren (https://www.delphipraxis.net/23979-objeckte-mit-einem-integer-assoziieren.html)

daniel8520 13. Jun 2004 13:08


Objeckte mit einem Integer assoziieren
 
Hallo,

ich hab ein klienes Problem. Und zwar bin ich grad dabei, ein Programm zu schreiben, in welchem ich eine Statistik benötige. Ich wollte aber nicht die doofe TChart-Ding nehmen.
Im Prinzip funkt. ja soweit auch alles. Nur eins nicht:
Delphi-Quellcode:
const
    ShapeS: array[1..12] of TObject = (S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12);
S1,S2, usw. sind Säulen des Diagramms (12 = ein Jahr). Ich wollte diese nun einzeln aus einer Datei lesen, und dabei immer den Integer um 1 erhöhen. Also die Datei ist ne INI-Datei. [1] ist der Januar [2] der Febraur usw.

Jetzt mein Problem: Bei dem Code hier oben, meldet er immer 'Konstantenausdruck erwartet'.

Weiß jemand, wie man ein Object mit einem Integer assoziiert?

CalganX 13. Jun 2004 13:20

Re: Objeckte mit einem Integer assoziieren
 
Hi,
ja gibt es. Ich habe diesen Beitrag mal etwas modifiziert:
Delphi-Quellcode:
uses {...}, TypInfo, {...};

type
  TSaeule = (S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12);

procedure TForm1.Button1Click(Sender: TObject);
var
  aRes: TSaeule;
begin
  aRes := TSaeule(GetEnumValue(TypeInfo(TSaeule), 'S'+IntToStr( {-->} DeinIntegerWert {<---} )));
end;
Das einzige Problem ist, dass du das mit einem Array nicht so machen kannst. Allerdings musst du mal gucken, ob du dein Programm umschreiben kannst, denn so geht es auf jedenfall.

Chris

maximov 14. Jun 2004 09:20

Re: Objeckte mit einem Integer assoziieren
 
Zitat:

Zitat von Chakotay1308
...
aRes := TSaeule(GetEnumValue(TypeInfo(TSaeule), 'S'+IntToStr( {-->} DeinIntegerWert {<---} )));
...

Das kann nicht dein ernst sein :wall: Einen integer aufwändig in ein string konvertieren dann die rtti bemühen um den selben integer zurück zu liefern - ist nicht grad effizient:

Delphi-Quellcode:
aRes := TSaele(DeinIntegerWert-1); // -1 für eins-basierten index!
so bleibt ein integer ein integer, ob enum oder nicht spielt da keine rollse :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:29 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