Variable muss mehrere Variablen enthalten...

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
TRojaner2012
Beiträge: 11
Registriert: So 5. Mai 2013, 10:30

Variable muss mehrere Variablen enthalten...

Beitrag von TRojaner2012 »

Hallo,
ich habe folgendes Problem:

Code: Alles auswählen

procedure CreatePassword(); //Unterprozedur!
var
   zeile: String;
   k: Integer;
   v: string; //das ist die Variable worum es geht!
begin
    for k:=0 to 19 do
      begin
        v:=('z'+(k+1)); //Muss wenn k=0 ist z1 sein usw... bis halt z20; (alles Variablen)
        zeile:= Form1.Listbox1.items[16+k];
        showmessage(Zeile[v+4]); //es soll die zX+4 te stelle in dem string angezeigt werden
      end;
end;
 
 

Code: Alles auswählen

  z1:= Random(9)+1;
  z2:= Random(9)+1;
  z3:= Random(9)+1;
  z4:= Random(9)+1;
  z5:= Random(9)+1;
  z6:= Random(9)+1;
  z7:= Random(9)+1;
  z8:= Random(9)+1;
  z9:= Random(9)+1;
  z10:= Random(9)+1;
  z11:= Random(9)+1;
  z12:= Random(9)+1;
  z13:= Random(9)+1;
  z14:= Random(9)+1;
  z15:= Random(9)+1;
  z16:= Random(9)+1;
  z17:= Random(9)+1;
  z18:= Random(9)+1;
  z19:= Random(9)+1;
  z20:= Random(9)+1;  
Das programm soll die oben definierten Stellen anzeigen

ich meine:
for k:=0 to 19 do //k ist in dem fall jetzt 15
begin
v:= z16 // z16 ist jetzt z.b. 9!
zeile:= Form1.Listbox1.items[16+k];
showmessage(Zeile[v+4]); // Und jetzt stelle z16+4 (sprich stelle 13...
end;

Wenn jemand eine Idee hat, wie das gehen könnte wäre ich über Hilfe sehr froh :)

Grüße

trotro
Zuletzt geändert von TRojaner2012 am Fr 10. Mai 2013, 12:29, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: Variable muss mehrere Variablen enthalten...

Beitrag von theo »

Ist das eine Frage? Ich sehe kein Fragezeichen.

TRojaner2012
Beiträge: 11
Registriert: So 5. Mai 2013, 10:30

Re: Variable muss mehrere Variablen enthalten...

Beitrag von TRojaner2012 »

Also:
wenn k=0 dann muss v=z1 sein, wenn k=1 dann muss v=z2 sein. und so weiter...

Wie mache ich das?
Zuletzt geändert von Lori am Fr 10. Mai 2013, 18:47, insgesamt 1-mal geändert.
Grund: ganz ruhig

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1632
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Variable muss mehrere Variablen enthalten...

Beitrag von corpsman »

Auch wenn ich wie Theo wahrscheinlich immer noch nicht ganz verstanden habe was du machen willst, so meinst du hier wahrscheinlich ein Array von Zahlen .

Code: Alles auswählen

 
var v:integer;
z:array[1..20];
i:integer;
..
begin
  for i := 0 to 19 do begin
    v := z[i+1];
..
 
eventuell überlegst du die aber noch mal genau was du machen willst, und schreibst das dann auch, wir haben hier alle keine Glaskugeln, und können nur helfen wenn wir dich verstehen.

Corpsman
--
Just try it

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Variable muss mehrere Variablen enthalten...

Beitrag von MAC »

Er weiss nicht das es Arrays gibt.
Du versuchst mit deinem String auf die unterschiedlichen z-Variablen zuzugreifen, was so nicht funktioniert, schau dir corpsman's Eintrag an, da steht ein gutes Beispiel...
Zuvor soltest du dir aber mal auf einer Delphi oder Lazarus Tutorialseite (z.b. Delphitreff) einen Eintrag über Arrays durchlesen...

Code: Alles auswählen

Signatur := nil;

TRojaner2012
Beiträge: 11
Registriert: So 5. Mai 2013, 10:30

Re: Variable muss mehrere Variablen enthalten...

Beitrag von TRojaner2012 »

Tut mir leid, wenn ich mich unklar ausdrücke...
also ich beschreibe jetzt einmal was das Programm machen soll. Wenn ihr den kompletten Quellcode brauch einfach schreiben:
Das Programm listet in einer Listbox zwanzig Zeilen a 50 zufälligen Zeichen auf (NUR Zahlen, kleine&große Buchstaben)[Nachfolgend nenne ich diese Zeilen Schlüssel]. Aus diesen zwanzig einzelnen Schlüsseln soll eine art Passwort gemacht werden, welches aus teilen der einzelnen Schlüssel besteht. Das heißt: Das Passwort besteht aus z.B jedem 8. Zeichen aus Schlüssel_1, jedem Zeichen aus Schlüssel_2 usw (halt alles zufällig). Den wie vielten Buchstaben man nehmen muss wird dann weiter unten in die Listbox geschrieben. So sieht die Zeile dann z.B. aus: 9;3;2:7;...9:.

Ich hoffe ihr versteht mich jetzt :)
Mit den arrays klappt das, aber ich bekomme kein Zeichen aus dem Schlüssel gemacht, und beim dritten Schlüssel schmiert das Programm komplett ab.

Grüße
trotro

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: Variable muss mehrere Variablen enthalten...

Beitrag von theo »

Ich möchte eine Lampe. 9 Watt.
Der Tisch ist klein. 4 Ostfriesen sind nicht in Sicht.
Also etwa 80 cm.
Ich hoffe ihr versteht mich jetzt.
Der Tisch geht kaputt, aber erst nach fünf Minuten.

:wink:

P.S. Deine "Frage" hat wieder kein Fragezeichen. Das formulieren einer Frage auf ein Fragezeichen hin, kann sehr hilfreich sein, sowohl für den Verfasser, als auch für den Leser.

TRojaner2012
Beiträge: 11
Registriert: So 5. Mai 2013, 10:30

Re: Variable muss mehrere Variablen enthalten...

Beitrag von TRojaner2012 »

Ich weiß leider nicht, wie ich das anders formulieren soll!
Tut mir leid!
ich möchte, dass das Programm aus den den zwanzig Zeilen in der einen Zeile jeden 3, in der anderen Zeile jeden 6 in einer anderen wieder nur jeden Buchstaben rausfiltert und in einen String legt!
Wie mache ich das?
Zuletzt geändert von Lori am Fr 10. Mai 2013, 19:07, insgesamt 2-mal geändert.
Grund: Bitte erst tief durchatmen und dann schreiben.

Lori
Beiträge: 93
Registriert: Sa 9. Sep 2006, 22:17

Re: Variable muss mehrere Variablen enthalten...

Beitrag von Lori »

TRojaner2012,
ich habe die Formatierung deiner Beiträge rausgenommen, weil es erstens nichts bringt, die anderen mit großen roten Buchstaben zu konfrontieren und außerdem ist das unhöflich. Überprüfe bitte deine letzten beiden Beiträge, ob ich nicht aus Versehen, etwas wichtiges gelöscht habe. Des weiteren ist es meiner Meinung nach im deutschen Sprachraum üblich nur ein Satzzeichen am Ende eines Satzes zu setzen.
Vielleicht erklärst du dein Problem an einem konkreten Beispiel.
Ich danke für das Beachten der Netiquette.
loris-spinnereyen.de

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Variable muss mehrere Variablen enthalten...

Beitrag von Scotty »

Vielleicht ist das deine Frage: "Wie kann ich auf nur einen Teil einer Zeichenkette zugreifen?" oder "Wie hole ich mir ein bestimmtes Zeichen aus einem String?"
Ersteres macht die Funktion Copy() (wenn der String nur ASCII Zeichen und keine Umlaute o.ä. enthält). Wenn es nur ein einzelnes Zeichen sein soll, dann geht der Zugriff per Index, da ein String unter Pascal als array of char definiert ist [2]. In deinem Beispiel machst du das schon per Index, schreibst dort aber keinen Zahlenwert (integer) als Index rein sondern einen String. Da zx als einzelne Variablen definiert sind, wirst du auch nicht so einfach eine von denen herausfinden. Damit kommen wir zur dritten möglichen Frage, die sich fast mit deinem gewählten Thema deckt: "Wie kann ich mehrere Zahlenwerte in einer gemeinsamen Variable zusammenfassen?". Das wäre dann ein array [3].
Ändere deinen Code in etwa wie folgt:

Code: Alles auswählen

var
  z:array[0..9] of integer;
  v:integer;
z[0]:=random(9);
...
v:=z[k]; 
if v>0 then
ShowMessage(Zeile[v]);
Eine Fehlermeldung kommt, wenn du Daten außerhalb des definierten Bereiches liest. Also die Listbox weniger als 16+k Einträge hat oder der String "Zeile" kürzer als v+4 wäre. Das kannst du über die Eigenschaft Count der Listbox und per Funktion Length() des Strings vorher prüfen. Außerdem liefert random() einen Wert von 0 .. <n und damit potentiell einen fehlerhaften Zugriff auf den Stringindex, der bei 1 beginnt.
Allgemein gibt es viel Hilfe im Internet, die du dir vorher ansehen solltest, z.B. [4] oder auch einen Grundlagenkurs Delphi/Pascal.
Dein Ansatz ist außerdem eher prinzipiell schlecht, wenn es um die Generierung eines Zufallsstrings geht. Deshalb könntest du auch fragen: "Wie kann ich xy so absichern, dass abc nicht gemacht werden kann?". Das sollte bei jeder Frage mit dabei stehen, damit die Hilfe sinnvoll sein kann. Vorausgesetzt natürlich, du verstehst die Netiquette und kannst sie umsetzen. Eigentlich möchte ich dir schon deines Alias wegen nicht helfen (Trojaner).

[1] http://lazarus-ccr.sourceforge.net/docs ... /copy.html
[2] http://wiki.freepascal.org/String
[3] http://wiki.freepascal.org/Array/de
[4] http://www.freepascal.org/docs-html/rtl ... tions.html und http://lazarus-ccr.sourceforge.net/docs ... tions.html

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Variable muss mehrere Variablen enthalten...

Beitrag von carli »

Es ist bestimmt eine Schulaufgabe, die man nur sinnvoll lösen kann, wenn man Arrays benutzt. Die Schüler sollen so auf die Idee kommen, dass Arrays sinnvoll sind.

TRojaner2012
Beiträge: 11
Registriert: So 5. Mai 2013, 10:30

Re: Variable muss mehrere Variablen enthalten...

Beitrag von TRojaner2012 »

carli hat geschrieben:Es ist bestimmt eine Schulaufgabe, die man nur sinnvoll lösen kann, wenn man Arrays benutzt. Die Schüler sollen so auf die Idee kommen, dass Arrays sinnvoll sind.
Ich bin zwar Schüler, aber dieses ist keine Schulaufgabe. In der Schule programmieren wir etwas anderes.

Gruße

trotro

Edit:

@Scotty
Die Frage ist dann:
Scotty hat geschrieben:"Wie kann ich mehrere Zahlenwerte in einer gemeinsamen Variable zusammenfassen?"
Dein Vorschlag funktioniert. :)
Vielen Dank.

Damit jetzt alle wissen was ich möchte:

[Achtung: Bezug zum Bild!]

Wie man sehen kann, sind dort zwanzig Zeilen an irgendwelchen Buchstaben&Zahlen. Darunter steht KEY: (20 Zahlen).
Jetzt soll (ich beziehe mich aufs Bild) jeder 6. Buchstabe in der ersten der Zwanzig Zeilen zu einer Stringvariablen zusammengefasst werden. Zu dieser Stringvariable kommt dann noch jeder 3. Buchstabe aus der zweiten Zeile usw. . Wie splitte ich diesen Zeilen jetzt in einzelnen Buchstaben auf?

Grüße Trotro

P.S. Mein Nickname hat sich irgendwann einfach mal ergeben. Der hat rein gar nichts mit mir oder dem, was ich Programmiere zu tun.
Das ganze soll ein Spiel werden, wo man als erstes ein zufälliges Passwort erraten muss.
Dateianhänge
Bsp.JPG

TRojaner2012
Beiträge: 11
Registriert: So 5. Mai 2013, 10:30

Re: Variable muss mehrere Variablen enthalten...

Beitrag von TRojaner2012 »

So es funktioniert!

Danke an alle, die zur Lösung des Problems beigetragen haben :-)
Ich mach das jetzt mit Copy&Delete, um nur jeden Xten Buchstaben aus der Zeile zu holen.

Grüße & Vielen Dank

Trotro
:-)

Antworten