Autor Thema: Will an ein Wort eine Zahl anhängen (z.B. MMM1)  (Gelesen 7668 mal)

Timer

  • volljähriger Tentakel
  • *****
  • Beiträge: 763
  • Geschlecht: Männlich
    • ICQ Messenger - 275798409
    • AOL Instant Messenger - commandertimer
    • Profil anzeigen
    • Meine Seite
    • E-Mail
Will an ein Wort eine Zahl anhängen (z.B. MMM1)
« am: 16. Juni 2007, 16:46:39 »
Ich habe ein Problem, mit dem ich nun schon seit über einer Stunde kämpfe. Ich möchte an einen String eine Zahl anhängen, die ich in der Form eines Integers gespeichert habe.
Ich habe also einen String (z.B. xxx) und einen int (z.B. 22) und möchte daraus xxx22 machen. Kann mir da jemand weiterhelfen? :-\

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Will an ein Wort eine Zahl anhängen (z.B. MMM1)
« Antwort #1 am: 16. Juni 2007, 16:48:43 »
String s="xxx";
int i=22;

s=s.Append(String.Format("%d", i));

Timer

  • volljähriger Tentakel
  • *****
  • Beiträge: 763
  • Geschlecht: Männlich
    • ICQ Messenger - 275798409
    • AOL Instant Messenger - commandertimer
    • Profil anzeigen
    • Meine Seite
    • E-Mail
Re: Will an ein Wort eine Zahl anhängen (z.B. MMM1)
« Antwort #2 am: 16. Juni 2007, 17:01:50 »
Hui, das ging aber schnell! :D
Danke, KhrisMUC! :)

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Will an ein Wort eine Zahl anhängen (z.B. MMM1)
« Antwort #3 am: 16. Juni 2007, 17:14:21 »
Kein Thema, hab gerade zufällig auf die Seite geschaut :)

String.Format unterstützt wie Display diverse Formatierungen: http://new.bigbluecup.com/manual/StringFormats.htm

Timer

  • volljähriger Tentakel
  • *****
  • Beiträge: 763
  • Geschlecht: Männlich
    • ICQ Messenger - 275798409
    • AOL Instant Messenger - commandertimer
    • Profil anzeigen
    • Meine Seite
    • E-Mail
Re: Will an ein Wort eine Zahl anhängen (z.B. MMM1)
« Antwort #4 am: 16. Juni 2007, 17:22:17 »
Gut. Soweit, so gut. Aber jetzt habe ich ein neues Problem... Anstatt die Zahlen auszuspucken, die ich erwarte, schreibt das Programm das Wort und dahinter eine achtstellige Zahlenkette, obwohl es einfach nur 40 sein sollte... Das int ist der Wert von einem Schieberegler im GUI (Regler_Zahlen.Value). Ich verstehe leider nicht, wo das Problem liegen könnte. :(

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Will an ein Wort eine Zahl anhängen (z.B. MMM1)
« Antwort #5 am: 16. Juni 2007, 17:34:23 »
Bei mir klappts einwandfrei.

Verwendeter Code?

Timer

  • volljähriger Tentakel
  • *****
  • Beiträge: 763
  • Geschlecht: Männlich
    • ICQ Messenger - 275798409
    • AOL Instant Messenger - commandertimer
    • Profil anzeigen
    • Meine Seite
    • E-Mail
Re: Will an ein Wort eine Zahl anhängen (z.B. MMM1)
« Antwort #6 am: 16. Juni 2007, 17:36:43 »
Hier:

function InEpiUmwandeln (int Epinummer){
  String s = "Epi";
  String i = String.Format ("%d", Epinummer);
  EpisodenNummer = s.Append (String.Format ("%d", i));
}

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Will an ein Wort eine Zahl anhängen (z.B. MMM1)
« Antwort #7 am: 16. Juni 2007, 17:40:25 »
Kein Wunder, bei Dir ist es doppelt gemoppelt. ;)

Entweder:
  String i = String.Format ("%d", Epinummer);
  EpisodenNummer = s.Append (i);
oder gleich:
  EpisodenNummer = s.Append (String.Format ("%d", Epinummer));
Du hast den String selbst nochmal als int in einen String gepackt, d.h. AGS hat die Adresse des Strings genommen, deswegen die achtstellige Zahl.

Timer

  • volljähriger Tentakel
  • *****
  • Beiträge: 763
  • Geschlecht: Männlich
    • ICQ Messenger - 275798409
    • AOL Instant Messenger - commandertimer
    • Profil anzeigen
    • Meine Seite
    • E-Mail
Re: Will an ein Wort eine Zahl anhängen (z.B. MMM1)
« Antwort #8 am: 16. Juni 2007, 18:02:50 »
Ach so. Danke! :)

Timer

  • volljähriger Tentakel
  • *****
  • Beiträge: 763
  • Geschlecht: Männlich
    • ICQ Messenger - 275798409
    • AOL Instant Messenger - commandertimer
    • Profil anzeigen
    • Meine Seite
    • E-Mail
Re: Will an ein Wort eine Zahl anhängen (z.B. MMM1)
« Antwort #9 am: 16. Juni 2007, 19:37:34 »
Ein Problem nach dem anderen... :P
Das nun erhaltene Wort ist auch die Bezeichnung eines Strings (xxx22). Ich weiß nur aber leider nicht, wie ich es machen soll, dass der String xxx22 in einer Funktion aufgerufen wird (anstelle des Strings EpisodenNummer).

Beispiel:
Liste.AddItem (EpisodenNummer.Copy ());soll so behandelt werden wie:
Liste.AddItem (xxx22.Copy ());
Ist das möglich?

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Will an ein Wort eine Zahl anhängen (z.B. MMM1)
« Antwort #10 am: 17. Juni 2007, 02:59:39 »
Nein, das geht nicht.
Der "Inhalt" eines Strings bleibt immer das, er kann nicht zum Variablennamen werden.  (In AGS.)

Aber es gibt sicher eine Möglichkeit, das umzusetzen, was Du erreichen möchtest.
"Ich brauche mehr Details!" ;)

Timer

  • volljähriger Tentakel
  • *****
  • Beiträge: 763
  • Geschlecht: Männlich
    • ICQ Messenger - 275798409
    • AOL Instant Messenger - commandertimer
    • Profil anzeigen
    • Meine Seite
    • E-Mail
Re: Will an ein Wort eine Zahl anhängen (z.B. MMM1)
« Antwort #11 am: 17. Juni 2007, 12:23:54 »
Na gut, ich schreibe mal den aktuellen Code:

Das ganze ist auf eine Liste der aktuellen MMM-Episoden bezogen (d.h. momentan habe ich erst 40 eingebaut). Regler_Zahlen ist ein Schieberegler, mit dem man dann in einer Liste (List Box) scrollen kann. Ich habe die Strings Epi1-40, denen der jeweilige Episodenname zugewiesen ist.

function Regler_Zahlen_Change(GUIControl *control) {
  int i = Regler_Zahlen.Value + 9;      //der maximale Wert ist 31, aber ich habe 40 Episoden, deshalb muss neun dazugezählt werden
  InEpiUmwandeln (i);                   //der Code, mit dem ich vorhin Probleme hatte
  String Zahl = EpisodenNummer.Copy (); //Das Ergebnis von InEpiUmwandeln
  Zahlauswahl.Clear ();                 //Den aktuellen Inhalt der Liste löschen
  Zahlauswahl.AddItem (Zahl.Copy ());   //Hier soll statt Zahl der Inhalt von Zahl stehen
  while (i != Regler_Zahlen.Value - 1)  //...und genau das ist das Problem.
  {                                     //Mit dem Rest wird die List Box ausgefüllt
    i--;                                //Also Epi23, Epi22, Epi21
    InEpiUmwandeln (i);                 //(in absteigender Reihenfolge)
    Zahl = EpisodenNummer.Copy ();
    Zahlauswahl.AddItem (Zahl.Copy ());
  }
}

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Will an ein Wort eine Zahl anhängen (z.B. MMM1)
« Antwort #12 am: 17. Juni 2007, 14:16:05 »
Wieso scrollst Du nicht direkt die Listbox?
Ich hab das mal getestet, hab eine Listbox gemacht, die 6 der 40 Items anzeigt. Daneben einen Slider, Wert von 1-35; beim verschieben setze ich Listbox.TopItem auf 35-slider.Value; die Scrollpfeile der Listbox selbst lasse ich ausgeblendet.

Funktioniert bestens.

Timer

  • volljähriger Tentakel
  • *****
  • Beiträge: 763
  • Geschlecht: Männlich
    • ICQ Messenger - 275798409
    • AOL Instant Messenger - commandertimer
    • Profil anzeigen
    • Meine Seite
    • E-Mail
Re: Will an ein Wort eine Zahl anhängen (z.B. MMM1)
« Antwort #13 am: 17. Juni 2007, 14:33:39 »
Ach herje, wie es scheint, habe ich mir die Sache unnötig verkompliziert...
Danke, funktioniert einwandfrei :).

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Will an ein Wort eine Zahl anhängen (z.B. MMM1)
« Antwort #14 am: 21. Juni 2007, 23:07:47 »
Übrigens, "just for reference", der Code ist immer noch reichlich umständlich. ;)

function Regler_Zahlen_Change(GUIControl *control) {
  Zahlauswahl.Clear ();
  int i = Regler_Zahlen.Value + 9;     
  while (i >= Regler_Zahlen.Value - 1) {                           
    Zahlauswahl.AddItem (String.Format("MMM %d", i);
    i--;
  }
}