AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zahl in Variablenbezeichung einbauen

Offene Frage von "CarlCasualty"
Ein Thema von CarlCasualty · begonnen am 4. Apr 2014 · letzter Beitrag vom 6. Apr 2014
Antwort Antwort
CarlCasualty

Registriert seit: 4. Apr 2014
Ort: Leipzig
2 Beiträge
 
Turbo Delphi für Win32
 
#1

Zahl in Variablenbezeichung einbauen

  Alt 4. Apr 2014, 19:17
Delphi-Version: 5
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?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Zahl in Variablenbezeichung einbauen

  Alt 4. Apr 2014, 19:54
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#3

AW: Zahl in Variablenbezeichung einbauen

  Alt 4. Apr 2014, 20:44
Also grundsätzlich:

mehrere Werte in einer Variable = eine Liste von "Variablen", bzw. ein Array davon
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: Zahl in Variablenbezeichung einbauen

  Alt 4. Apr 2014, 22:27
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.

Geändert von Perlsau ( 5. Apr 2014 um 12:17 Uhr) Grund: Ergänzung
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: Zahl in Variablenbezeichung einbauen

  Alt 5. Apr 2014, 11:54
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.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Zahl in Variablenbezeichung einbauen

  Alt 6. Apr 2014, 10:16
@Dejan Vu
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#7

AW: Zahl in Variablenbezeichung einbauen

  Alt 6. Apr 2014, 10:22
@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.
  Mit Zitat antworten Zitat
CarlCasualty

Registriert seit: 4. Apr 2014
Ort: Leipzig
2 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: Zahl in Variablenbezeichung einbauen

  Alt 6. Apr 2014, 21:38
Danke für die Antworten.
Popovs beitrag hat mir eigentlich schon gereicht, jetzt weiß ich, wie ich es machen kann.

Carl
  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 18:44 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