AGB  ·  Datenschutz  ·  Impressum  







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

Strings und Case of

Ein Thema von Klaus Kirchhoff · begonnen am 24. Okt 2006 · letzter Beitrag vom 2. Mär 2007
Antwort Antwort
Seite 3 von 3     123   
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#21

Re: Strings und Case of

  Alt 25. Okt 2006, 16:41
Zitat von EWeiss:
Meiner meinung nach sind IF abfragen als lösung nicht der richtige weg..
Zitat von alzaimar:
.... Ich würde einen String sofort nachdem er aufgetaucht ist, in eine Zahl umwandeln, oder hier, in eine Aufzählung (enum), also z.B. (natürlich mit einem Array, das dient hier nur zur Anschauung):
Immer Alles lesen
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#22

Re: Strings und Case of

  Alt 25. Okt 2006, 16:51
Zitat:
Immer Alles lesen
Jawohl Chef habs gelesen

gruß
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#23

Re: Strings und Case of

  Alt 25. Okt 2006, 16:53
Zitat von EWeiss:
Meiner meinung nach sind IF abfragen als lösung nicht der richtige weg..
Stell dir vor du hast 2000 Tiere die überprüft werden müssen, dein Tier ist das 2000
dann muss jede IF abfrage überprüft werden bis du zum ziel kommst...
Deshalb sucht man ja nicht nach einem String ! Man benutzt einen Ordinaltyp, der eben nicht beeinflusst wird von Groß/Kleinschreibung usw. Und die werden eben durchnummeriert (mit IDs etc.). Wer soll denn mit einem 2000-Zeilen Case was anfangen ? Das macht nur Sinn bei Fehlermeldungen, also in Ausnahmefällen.
Gruß
Hansa
  Mit Zitat antworten Zitat
BigBob

Registriert seit: 25. Feb 2007
2 Beiträge
 
#24

Re: Strings und Case of

  Alt 2. Mär 2007, 17:32
Hi Leute!

Bin neu auf dem Board ... naja, ich hol dieses Thema nochmal ans Tageslicht.
Die Idee mit Strings in Integer umzuwandeln ist schön und gut, aber genau das will ich umsetzen. Die Sache ist die: ich habe 32 feste Strings die der Bediener eingeben können muss (später vllt noch ein paar mehr), und die will ich ja gerade in Zahlen umwandeln. Aber da hilft mir "case ... of" nicht weiter. Wie würdet ihr so ein Problem lösen? Mit "if ... then ... else" ist es nur noch mehr schreibarbeit als es mit "case ... of" ohnehin schon ist. Ich hoffe ihr habt da noch einen Vorschlag.


MfG BigBob
PS: ich bin ganz neu in der Materie und versuche mit meinem begrenzten Wissen ein Skat-Computer zu proggen ... das erweist sich aber bisher als heikles unterfangen, dabei bin ich immernoch beim kartengeben und -lesen *grml*
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#25

Re: Strings und Case of

  Alt 2. Mär 2007, 17:53
Hallo,

Delphi-Quellcode:
case StrUtils.AnsiIndexStr(['foo','bar']) of
  0:;
  1:;
end;
so was?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
BigBob

Registriert seit: 25. Feb 2007
2 Beiträge
 
#26

Re: Strings und Case of

  Alt 2. Mär 2007, 19:54
Zitat von DGL-luke:
Hallo,

Delphi-Quellcode:
case StrUtils.AnsiIndexStr(['foo','bar']) of
  0:;
  1:;
end;
so was?

Hmmm ... daraus werd ich nicht schlau, da muss ich mir nochmal die Tipps hier Thread angucken.
Ursprünglich sah das bei mir so aus:

Delphi-Quellcode:
case befehl of 'Karo 7'       : gesetzt:=1;
                 'Karo 8'         : gesetzt:=2;
                 'Karo 9'         : gesetzt:=3;
                 'Karo Bube'    : gesetzt:=4;
                 'Karo Dame'    : gesetzt:=5;
                 'Karo König'     : gesetzt:=6;
                 'Karo 10'      : gesetzt:=7;
                 'Karo Ass'       : gesetzt:=8;
                 'Herz 7'         : gesetzt:=9;
                 'Herz 8'         : gesetzt:=10;
                 'Herz 9'         : gesetzt:=11;
                 'Herz Bube'     : gesetzt:=12;
                 'Herz Dame'     : gesetzt:=13;
                 'Herz König'     : gesetzt:=14;
                 'Herz 10'       : gesetzt:=15;
                 'Herz Ass'       : gesetzt:=16;
                 'Pik 7'         : gesetzt:=17;
                 'Pik 8'         : gesetzt:=18;
                 'Pik 9'         : gesetzt:=19;
                 'Pik Bube'       : gesetzt:=20;
                 'Pik Dame'       : gesetzt:=21;
                 'Pik König'     : gesetzt:=22;
                 'Pik 10'         : gesetzt:=23;
                 'Pik Ass'       : gesetzt:=24;
                 'Kreuz 7'       : gesetzt:=25;
                 'Kreuz 8'       : gesetzt:=26;
                 'Kreuz 9'       : gesetzt:=27;
                 'Kreuz Bube'     : gesetzt:=28;
                 'Kreuz Dame'     : gesetzt:=29;
                 'Kreuz König'   : gesetzt:=30;
                 'Kreuz 10'       : gesetzt:=31;
                 'Kreuz Ass'     : gesetzt:=32
                 ELSE gesetzt:=0 END;
Aber ich habs jetz umgeändert mit der "if" Anweisung. Ich nehme den Frage-Button wieder raus, aber trotzdem: muss das sein?:

Delphi-Quellcode:
if befehl='Karo 7then gesetzta:=1 else {Kartenwert nach Kartenname ermitteln}
  if befehl='Karo 8then gesetzta:=2 else
  if befehl='Karo 9then gesetzta:=3 else
  if befehl='Karo Bubethen gesetzta:=4 else
  if befehl='Karo Damethen gesetzta:=5 else
  if befehl='Karo Königthen gesetzta:=6 else
  if befehl='Karo 10then gesetzta:=7 else
  if befehl='Karo Assthen gesetzta:=8 else
  if befehl='Herz 7then gesetzta:=9 else
  if befehl='Herz 8then gesetzta:=10 else
  if befehl='Herz 9then gesetzta:=11 else
  if befehl='Herz Bube'   then gesetzta:=12 else
  if befehl='Herz Dame'   then gesetzta:=13 else
  if befehl='Herz Königthen gesetzta:=14 else
  if befehl='Herz 10'   then gesetzta:=15 else
  if befehl='Herz Assthen gesetzta:=16 else
  if befehl='Pik 7'   then gesetzta:=17 else
  if befehl='Pik 8'   then gesetzta:=18 else
  if befehl='Pik 9'   then gesetzta:=19 else
  if befehl='Pik Bubethen gesetzta:=20 else
  if befehl='Pik Damethen gesetzta:=21 else
  if befehl='Pik König'   then gesetzta:=22 else
  if befehl='Pik 10then gesetzta:=23 else
  if befehl='Pik Ass'   then gesetzta:=24 else
  if befehl='Kreuz 7'   then gesetzta:=25 else
  if befehl='Kreuz 8'   then gesetzta:=26 else
  if befehl='Kreuz 9'   then gesetzta:=27 else
  if befehl='Kreuz Bubethen gesetzta:=28 else
  if befehl='Kreuz Damethen gesetzta:=29 else
  if befehl='Kreuz König'   then gesetzta:=30 else
  if befehl='Kreuz 10then gesetzta:=31 else
  if befehl='Kreuz Ass'   then gesetzta:=32 else gesetzta:=0;

Wie unschwer auffällt ist das eine Menge Schreibkram. Naja, wenn jemand ne Idee hat, wie es hätte schneller gehen können, bin ich dafür offen. Ansonsten is meine Frage beantwortet.


MfG BigBob
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#27

Re: Strings und Case of

  Alt 2. Mär 2007, 22:06
Das is ja bei dir noch viel einfacher...

Delphi-Quellcode:
gesetzt := AnsiIndexStr(['Karo 7'],['Karo 8']{,...})+1;
if gesetzt = -1 then
  gesetzt := 0;
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#28

Re: Strings und Case of

  Alt 2. Mär 2007, 22:37
Nabend ...,
mir fallen spontan 2 mögliche Lösungen ein.
Array definieren
Delphi-Quellcode:
const Karte_Name: Array[1..32] of String = ('Karo 7','Karo 8','Karo 9',
                                            'Karo Bube','Karo Dame','Karo König',
                                            'Karo 10','Karo Ass',
                                            'Herz 7','Herz 8','Herz 9',
                                            'Herz Bube','Herz Dame','Herz König',
                                            'Herz 10','Herz Ass',
                                            'Pik 7','Pik 8','Pik 9',
                                            'Pik Bube','Pik Dame','Pik König',
                                            'Pik 10','Pik Ass',
                                            'Kreuz 7','Kreuz 8','Kreuz 9',
                                            'Kreuz Bube','Kreuz Dame','Kreuz König',
                                            'Kreuz 10','Kreuz Ass');
und dann die Abfragen
Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
var i: integer;
    Karte: String;
begin
  Karte:= 'Karo 10';
  for i:= 1 to High(Karte_Name) do
    if Karte_Name[i] = Karte then
      showmessage(Karte+ ' mit Wert '+ IntToStr(i)+ ' gesetzt');
end;

procedure TForm1.ButtonClick(Sender: TObject);
var i: integer;
    Karte: String;
begin
  Karte:= 'Karo 10';
  i:= AnsiIndexStr(Karte, Karte_Name) +1;
  showmessage(Karte+ ' mit Wert '+ IntToStr(i)+ ' gesetzt);
end;
LG Mario
Mario
'Lesen Sie schnell, denn nichts ist beständiger als der Wandel im Internet!'
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 06:23 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