Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zahl in Variablenbezeichung einbauen (https://www.delphipraxis.net/179831-zahl-variablenbezeichung-einbauen.html)

CarlCasualty 4. Apr 2014 18:17

Delphi-Version: 5

Zahl in Variablenbezeichung einbauen
 
Hallo,

Ich möchte den Quelltext vereinfachen.
Ich habe die 10 Variablen Zahl1, Zahl2 usw. bis Zahl5 sowie Ergebnis1 bis Ergebnis5.
Mit allen 5 Variablen "Zahl" soll jetzt das gleiche gemacht werden. Um jetzt nicht alles fünfmal das gleich zu schreiben, wollte ich in etwas sowas machen:

for i:= 1 to 5 do
begin
...
end

wobei ich dann immer mit Zahl[i] und Ergebnis[i] arbeite. Das geht aber so nicht, zumindest bei Strings wäre ja dann immer die Stelle i gemeint.

Ich hoffe, ich konnte mein Problem einigermaßen verständlich ausdrücken. Wie kann ich das jetzt richtig machen?

Popov 4. Apr 2014 18:54

AW: Zahl in Variablenbezeichung einbauen
 
Also dass es Arrays gibt, hast du anscheinend schon mitbekommen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Zahl: array[1..10] of Integer;
  Ergebnis: array[1..10] of String;
  i: Integer;
begin
  for i := 1 to 10 do
  begin
    Zahl[i] := i;
    Ergebnis[i] := 'Ergebnis' + IntToStr(i);
  end;

  for i := 1 to 10 do
    ShowMessage(IntToStr(Zahl[i]) + Ergebnis[i]);
end;
Was du evtl. missverstehst ist das hier:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Ergebnis: String;
begin
  Ergebnis := 'Ergebnis';
  ShowMessage(Ergebnis[1]);
end;
Sieht ähnlich aus, liefert aber unterschiedliche Ergebnisse. Das eine Ergebnis[i] ist ein Array, das andere Ergebnis[1] im Grunde ein Char. Mit Ergebnis[i] sagst du dem Array, das er die den i-ten String ausgeben soll, mit Ergebnis[1] sagst Delphi, dass du das erste Zeichen des Strings haben willst. Ist etwas verwirrend, weil gleich.

Was macht man aber wenn man das erste Zeichen eines Array-Strings haben will? Einfach das
Delphi-Quellcode:
  for i := 1 to 10 do
    ShowMessage(IntToStr(Zahl[i]) + Ergebnis[i][1]);
Wenn es ein Array ist, dann ist die erste [x] Angabe der Array und der zweite der Char. Ist es ein String, ist die erste [x] Angabe der Char.

himitsu 4. Apr 2014 19:44

AW: Zahl in Variablenbezeichung einbauen
 
Also grundsätzlich:

mehrere Werte in einer Variable = eine Liste von "Variablen", bzw. ein Array davon

Perlsau 4. Apr 2014 21:27

AW: Zahl in Variablenbezeichung einbauen
 
Zitat:

Zitat von CarlCasualty (Beitrag 1254689)
Ich hoffe, ich konnte mein Problem einigermaßen verständlich ausdrücken. Wie kann ich das jetzt richtig machen?

Nicht wirklich. Für mich liest sich das so, als ob du versuchen wolltest, Variablen-Bezeichner mit fortlaufender Numerierung am Ende zur Laufzeit erst zu erzeugen. Oder du möchtest die Numerierung am Ende der Variablen-Bezeichner in einer Schleife dazu nutzen, die Variablen auszuwählen.

Beides wäre u.U. und mit gewissen Verrenkungen möglich, ist aber ganz schlechter Programmierstil. Wie die anderen hier schon gezeigt haben, benötigst du ein Array – eine Ansammlung gleichartiger Typen, die über einen Index angesprochen werden. Am besten wäre es wohl, du machst dir einen neuen Typen, hier einen Record, der die beiden Objekte Zahl und Ergebnis enthält:
Delphi-Quellcode:
Type
  TMeinTyp = Record
              Zahl,
              Ergebnis : Integer;
             end;
Mit diesem Typen legst du dir nun ein Array an:
Delphi-Quellcode:
Var
  MeinArray : Array[1..5] of TMeinTyp;
Nun kannst du das Array einfach befüllen (oder auslesen):
Delphi-Quellcode:
MeinArray[1].Zahl    := 1;
MeinArray[1].Ergebnis := 5;
Ergänzung: Das T in TMeinTyp stellt man deshalb einem Typbezeichner voran, um ihn beim Programmieren deutlich als Typ erkennen zu können.

Dejan Vu 5. Apr 2014 10:54

AW: Zahl in Variablenbezeichung einbauen
 
Zitat:

Zitat von Popov (Beitrag 1254695)
A...Das eine Ergebnis[i] ist ein Array, das andere Ergebnis[1] im Grunde ein Char. Mit Ergebnis[i] sagst du dem Array, das er die den i-ten String ausgeben soll,

Was denn nun 'Char' oder 'String'.

Ein String ist im Grunde genommen ein 'Array Of Char' (ja gut, ein wenig mehr). Ergo funktioniert der Zugriff auch genauso wie bei einem Array.

p80286 6. Apr 2014 09:16

AW: Zahl in Variablenbezeichung einbauen
 
@Dejan Vu
Zitat:

Zitat von Popov (Beitrag 1254695)
Wenn es ein Array ist, dann ist die erste [x] Angabe der Array und der zweite der Char. Ist es ein String, ist die erste [x] Angabe der Char.

Gruß
K-H

Dejan Vu 6. Apr 2014 09:22

AW: Zahl in Variablenbezeichung einbauen
 
@p80286: Was willst Du mir damit sagen? So ganz kommentarlose Zitate sind ja nun auch nicht der Bringer. Lies dir einfach mal Popovs Beitrag durch und dann wirst Du merken, das er einmal von String und einmal von Char im Bezug auf 'myString[i]' spricht. Das er das eigentlich verstanden hat, merkt man ja auch.

CarlCasualty 6. Apr 2014 20:38

AW: Zahl in Variablenbezeichung einbauen
 
Danke für die Antworten.
Popovs beitrag hat mir eigentlich schon gereicht, jetzt weiß ich, wie ich es machen kann. :)

Carl


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