AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi case string of funktioniert nicht? oO
Thema durchsuchen
Ansicht
Themen-Optionen

case string of funktioniert nicht? oO

Ein Thema von Darko · begonnen am 4. Aug 2008 · letzter Beitrag vom 11. Feb 2011
Antwort Antwort
Seite 1 von 2  1 2      
Darko

Registriert seit: 12. Mai 2008
39 Beiträge
 
Delphi 7 Enterprise
 
#1

case string of funktioniert nicht? oO

  Alt 4. Aug 2008, 13:10
Ich wollte endlich mal etwas im Code aufräumen und cases einbauen. Nur merke ich leider jetzt direkt schon, dass es nicht mehr so funktioniert, wie ich möchte.

Aus

case sj of wird:

Zitat:
[Fehler] Unit3.pas(686): Ordinaltyp erforderlich
Gibt es eine denn eine andere Möglichkeit, Strings in eine Art cases zu verschachteln?
Ralf-Michael
  Mit Zitat antworten Zitat
Brainshock

Registriert seit: 26. Nov 2004
Ort: 37345
214 Beiträge
 
Delphi 7 Professional
 
#2

Re: case string of funktioniert nicht? oO

  Alt 4. Aug 2008, 13:14
Nimm z.B. AnsiIndexText:

Delphi-Quellcode:
case AnsiIndexText(sj, ['Wert1', 'Wert2', 'Wert3']) of
  0: ShowMessage('Wert1');
  1: ShowMessage('Wert2');
  2: ShowMessage('Wert3');
end;
Gruß, Matthias
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#3

Re: case string of funktioniert nicht? oO

  Alt 4. Aug 2008, 13:17
Einen Workaround (finde ich aber unsauber) gibt es z.B. hier in der Code-Library. Das nächste mal bitte selber suchen

Alternativ hat jbg aka Andreas Hausladen auch in seinem Delphi-Präprozessor DlangExtensions sowas eingebaut. Das braucht dann halt aber jeder, der an Deiner Anwendung mitarbeitet.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Darko

Registriert seit: 12. Mai 2008
39 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: case string of funktioniert nicht? oO

  Alt 4. Aug 2008, 13:34
Funktioniert wunderprächtig.

Danke!
Ralf-Michael
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
826 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: case string of funktioniert nicht? oO

  Alt 11. Feb 2011, 17:54
Hallo,

der Threat ist zwar schon uralt, aber ich finde es am sinnvollsten auf ihm aufzubauen. Ich weiß nämlich nicht genau, wie der CaseString funktioniert und vielleicht kann es mir jemand ganz kurz erklären.

Delphi-Quellcode:
case AnsiIndexText(sj, ['Wert1', 'Wert2', 'Wert3']) of
  0: ShowMessage('Wert1');
  1: ShowMessage('Wert2');
  2: ShowMessage('Wert3');
end;
Ich weiß nicht was AnsiIndexText und was sj sind.

Ansonsten verstehe ich das so, dass Wert1-3 die möglichen Inhalte von AnsiIndexText od sj (bin mir über den Inhalt dieser beiden Komponenten unsicher) sind.
0: Diese Anweisung wird ausgeführt, wenn der Inhalt von AnsiIndexText od sj gleich dem Wert1 sind.
1: Diese Anweisung wird ausgeführt, wenn der Inhalt von AnsiIndexText od sj gleich dem Wert2 sind.
USW.

Könnte ich diese Anweisungen auch aufwendiger gestalten?
Ähnlich
Delphi-Quellcode:
case AnsiIndexText(sj, ['Wert1', 'Wert2', 'Wert3']) of
  0: begin
      if x=y then
        begin
          Blablabla;
        end;
     end;
  1: ShowMessage('Wert2');
  2: ShowMessage('Wert3');
end;
Vielen Dank im Voraus für die Nachhilfestunde

Gruß

Ykcim
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

AW: case string of funktioniert nicht? oO

  Alt 11. Feb 2011, 17:58
Delphi-Referenz durchsuchenAnsiIndexText sj ist dabei im Beispiel der String, der gesucht wird. Und natürlich kannst Du in Deinen case-Labels noch weitere Prüfungen etc. einbauen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

AW: case string of funktioniert nicht? oO

  Alt 11. Feb 2011, 18:04
Da geht doch der Sinn von Case verloren das es ab einer bestimmten Anzahl performanter ist. Aber wenn vorher der String in einer Funktion verglichen wird ist das ja ein doppeltes vergleichen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
826 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: case string of funktioniert nicht? oO

  Alt 11. Feb 2011, 18:04
DIE REAKTIONSGESCHWINDIGKEIT IN DIESEM FORUM IST EINFACH WELKLASSE!!!

Vielen Dank!

Ganz verstehe ich es immernoch nicht.

Wenn ich eine Varible habe (AUSDRUCK) das hätte ich dann in sj gesucht.

Was bedeutet dann "AnsiIndexText"? Ist das eine beliebige Bezeichnung des "Rahmens"?

Wie müsste das deklariert sein?

Gruß

Ykcim
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#9

AW: case string of funktioniert nicht? oO

  Alt 11. Feb 2011, 18:10
AnsiIndexText() ist eine normale Funktion, die einen String und ein Array mit Strings übergeben bekommt. Je nach dem, welcher String aus dem Array auf den String (hier sj) passt, gibt die Funktion den Index im Array zurück, so dass dieser vom case ausgewertet werden kann.

HTH
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#10

AW: case string of funktioniert nicht? oO

  Alt 11. Feb 2011, 18:15
Da geht doch der Sinn von Case verloren das es ab einer bestimmten Anzahl performanter ist [...]
Dafür bleibt ein anderer Sinn erhalten: Es ist übersichtlicher als dutzende If-then-else Verschachtelungen
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:54 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