Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi dynamische Variablennamen (https://www.delphipraxis.net/43270-dynamische-variablennamen.html)

hummer 31. Mär 2005 19:06


dynamische Variablennamen
 
Hallo!
Ich habe ein mehrere Arrays von einem Record und möchte jetzt allen Variablen Werte zuweisen.
Mein Record und meine Arrays sehen so aus.
Delphi-Quellcode:
  TFragen = record
      Frage : string;
      Antwort_A : string;
      Antwort_B : string;
      Antwort_C : string;
      Antwort_D : string;
      Richtig : string[1];
      end;
Delphi-Quellcode:
  Kat1,kat2,Kat3,Kat4,Kat5,Kat6,Kat7,Kat8,Kat9,Kat10,Kat11,Kat12,Kat13,Kat14,Kat15 : Array[1..10] of TFragen;
Wenn ich jetzt einem Platz eines Array einen Wert zuweise sieht das so aus.
Delphi-Quellcode:
Kat1[1].Frage := 'Test';
So jetzt möchte ich nich alles selber schreiben sondern das über Findcomponent lösen.
Habe das so probiert für das erste Beispiel.
Delphi-Quellcode:
TFragen(FindComponent('Kat'+IntToStr(1)+'['+IntToStr(1)+'].Frage')) := 'test'
Die Einsen werden hinterher natürlich durch Variablen aus for Schleifen ersetzt.
Es kommt aber immer ein Fehler: Ungültige Typumwandlung. Was mache ich falsch?
Vielen Dank schonmal.

glkgereon 31. Mär 2005 19:11

Re: dynamische Variablennamen
 
mit FindComponent findest du nachfolger von TComponent, also (zB) Edits, Labels, ListBoxen, ...
TFragen ist aber ein Record, nicht mal ne Klasse

Du versuchst also bei TFragen(FindComponent(..)) eine Klasse, abgeleitet von TComponent in ein Record zu casten.
und da meckert er (zurecht!!!)

Pseudemys Nelsoni 31. Mär 2005 19:11

Re: dynamische Variablennamen
 
statt:

Delphi-Quellcode:
Kat1,kat2,Kat3,Kat4,Kat5,Kat6,Kat7,Kat8,Kat9,Kat10,Kat11,Kat12,Kat13,Kat14,Kat15 : Array[1..10] of TFragen;
kömnntest du auch:

Delphi-Quellcode:
TFragenArray = array [1..10] of TFragen;
Kat: array [1..15] of TFragenArray;

schreiben.

Dax 31. Mär 2005 19:11

Re: dynamische Variablennamen
 
FindComponent liefert eine Klasse zurück, die du zu einem Record casten willst. Das ist (logisch) unmöglich. Ausserdem würde das sowieso nicht funktionieren, da FindComponent nur Komponenten findet, die auf dem Form platziert wurden ;)

Antigo 31. Mär 2005 19:12

Re: dynamische Variablennamen
 
machs doch folgendermassen:
Delphi-Quellcode:
type Kategorie = record
  Fragen: array[1..10] of TFragen
end;

type TFragen = record
  Frage : string;
  Antwort_A : string;
  Antwort_B : string;
  Antwort_C : string;
  Antwort_D : string;
  Richtig : string[1];
end;
und dann steuerst du es über

Delphi-Quellcode:
var Kategorien: array[1..10] of Kategorie;
also
Delphi-Quellcode:
Kategorien[x].Fragen[y].frage:='';

ist nicht getestet müsste aber vom Ansatz her so gehen ;)


edit zZzzZ

hummer 31. Mär 2005 19:25

Re: dynamische Variablennamen
 
Ok dann werd ich Antigos Vorschlag nehmen. Vielen Dank an alle.


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