Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Variable Strings mit festem Anfang

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
s-m-n



Anmeldungsdatum: 03.10.2005
Beiträge: 106
Wohnort: Pietling in Oberbayern / Deutschland

BeitragVerfasst am: 01.10.2006, 11:10    Titel: Variable Strings mit festem Anfang Antworten mit Zitat

Hi,

wie muss ich diesen Code

Code:
dim as string x
x = lcase(x)
SELECT CASE x

  case "a": print "X ist a"

end select


ändern, dass bei sämtlichen Strings in x, die mit "a" beginnen, "X ist a" ausgegeben wird?


Danke!

Gruß s-m-n
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 01.10.2006, 11:18    Titel: Antworten mit Zitat

Hi s-m-n,
wie wärs mit
Code:
Select Case Mid(x,1,1)
  Case "a":..
..
alternativ
Code:
Select Case Left(x,1)
  Case "a":..
..

Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
s-m-n



Anmeldungsdatum: 03.10.2005
Beiträge: 106
Wohnort: Pietling in Oberbayern / Deutschland

BeitragVerfasst am: 01.10.2006, 14:20    Titel: Antworten mit Zitat

Hmmmm, das trifft's fast, aber nicht ganz. Ich leg mal die Karten auf den Tisch:
Ich hab nämlich zum Spaß eine verrückte Version des COMMAND.COM-Interpreters programmiert, die folgendermaßen aussieht:

Code:
#include "vbcompat.bi"
10 print "Simonsoft(L) Schmarrn hochdrei"
print "   (C)Copyleft Simonsoft Corp 2006-2006"
print


1 input "C:\>", x$
2 x$ = lcase(x$)
  select case x$
  case "exit": end
  case "": goto 1
  case "help": goto 3
  case "dir": print "Keine Dateien oder Verzeichnisse ":goto 1
  case "date": print "Samstag, 13. September 1928":goto 1
  case "time": print "Es ist"; hour(now); " geteilt durch"; minute(now); ", aber Ausrechnen müssen Sie es selbst.":goto 1
  case "edit": shell "notepad.exe":goto 1
  case "format c:": goto 4
  case "cd": print "Ungültiges Verzeichnis.":goto 1
  case "del": goto 5
  case "cls": print "Ihre Anfrage kann nicht ausgehführt werden (Grund: Keine Lust).":goto 1
  case "win": print "Windows wurde aus Sicherheitsgründen gelöscht. Bedanken Sie sich bei Bill Gates für die vielen Fehler.":goto 1
  case "rst": cls:goto 10
  case else: beep:print "Befehl oder Dateiname nicht gefunden.":goto 1
end select

3 print "Mögliche Befehle:"
  print "exit/dir/date/time/edit/format c:/del/cls/cd/rst/win"
  print "Groß/Kleinschreibung spielt keine Rolle."
  goto 1

4 print "Bitte warten..."

t = TIMER
DO
LOOP UNTIL TIMER > (t + 15)
PRINT "Festplatte C erfolgreich formatiert. Alle Daten sind futsch."
goto 1

5 input "Alles löschen (J/N)"; d$
d$ = lcase(d$)
select case d$
case "j": print "Sie haben JA gewählt. Es wurde alles gelöscht, wie Sie es wünschten."
case "n": print "Sie haben JA gewählt. Es wurde alles gelöscht, wie Sie es wünschten."
end select
goto 1


Und da möchte ich halt den Befehl "cd <verzeichnisname>" mit der Antwort "ungültiges Verzeichnis" einbauen, aber <verzeichnisname> kann ja vieles sein. Und deshalb sollte das Programm nur die ersten 2 Zeichen desjenigen Strings auswerten, der mit "cd" beginnt. cd alleine ist ja schon drin, aber das mit dem Verzeichnisnamen hab ich eben noch nicht hinbekommen. Und cd alleine ist auch langweilig - das benutzt ja keiner.
Und das mit der HDD LED im anderen Forum wollte ich in den Format c:-Teil einbauen, um das ganze möglichst authentisch wirken zu lassen.

Gruß s-m-n
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 01.10.2006, 14:33    Titel: Antworten mit Zitat

Hi. lächeln
Um <verzeichnisname> zu isolieren, verwende einfach folgenden Code:
[code]
verzeichnisname$=Right$(eingabestring$, Len(eingabestring$)-3)
[code]

eingabestring$ ist natürlich noch zu ersetzen, aber sonst: it should work. lächeln
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 01.10.2006, 15:38    Titel: Antworten mit Zitat

Mao hat Folgendes geschrieben:
Hi. lächeln
Um <verzeichnisname> zu isolieren, verwende einfach folgenden Code:
Code:

verzeichnisname$=Right$(eingabestring$, Len(eingabestring$)-3)


eingabestring$ ist natürlich noch zu ersetzen, aber sonst: it should work. lächeln
Mao hat ein'\' vergessen happy
Ansonsten:witzige Idee, aber GOTO finde ich nur in einer einzigen Form akzeptabel:
GOTO hell
[Edit]
damit es nicht heißt, daß ich nur mecker:
Code:
'Ä=Ž , Ö=™ , Ü=š ; ä=„ , ö=”, ü=? , ß=á ,§=õ , ©=¸
#include "vbcompat.bi"
Do
   print "Simonsoft(L) Schmarrn hochdrei"
   print "   (C)Copyleft Simonsoft Corp 2006-2006"
   print
  Do
    input "C:\>", x$
    select case lcase(x$)
      case "exit", "q": end
      case ""
      case "help":
        print "M”gliche Befehle:"
        print "exit/dir/date/time/edit/format c:/del/cls/cd/rst/win"
        print "Groá-/Kleinschreibung spielt keine Rolle."
      case "dir": print "Keine Dateien oder Verzeichnisse "
      case "date": print "Samstag, 13. September 1928"
      case "time": print "Es ist"; hour(now); " geteilt durch"; minute(now); ", aber Ausrechnen m?ssen Sie es selbst."
      case "edit": shell "notepad.exe"
      case "format c:"
        print "Bitte warten..."
        t=TIMER
        DO
        LOOP UNTIL TIMER > (t + 15)
        PRINT "Festplatte C erfolgreich formatiert. Alle Daten sind futsch."
      case "cd": print "Ung?ltiges Verzeichnis."
      case "del":
        input "Alles l”schen (J/N)"; d$
        select case lcase(d$)
          case "j": print "Sie haben JA gew„hlt. Es wurde alles gel”scht, wie Sie es w?nschten."
          case "n": print "Sie haben JA gew„hlt. Es wurde alles gel”scht, wie Sie es w?nschten."
        end select
      case "cls"
        print "Ihre Anfrage kann nicht ausgef?hrt werden (Grund: Keine Lust)."
      case "win"
        print "Windows wurde aus Sicherheitsgr?nden gelöscht. Bedanken Sie sich bei Bill Gates f?r die vielen Fehler."
      case "rst": cls:Exit Do
      case else
        beep
        print "Befehl oder Dateiname nicht gefunden."
    end select
  Loop Until 1=0
Loop Until 1=0
..das Ganze mal ohne GOTO..
..weil ich ein fauler Mensch bin, habe ich als (undokumentiertes) 'Feature'(?) noch
'q' für 'Exit' eingebastelt und die Umlaute geändert..

Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
s-m-n



Anmeldungsdatum: 03.10.2005
Beiträge: 106
Wohnort: Pietling in Oberbayern / Deutschland

BeitragVerfasst am: 01.10.2006, 16:54    Titel: Antworten mit Zitat

Danke an alle. Mein Problem ist gelöst.

@mao:
du hast mich genau verkehrt herum verstanden - ich wollte nicht das <verzeichnisname> isolieren, sondern das "cd".

@ytwinky

wegen den gotos haben wir uns schonmal unterhalten... lächeln Ich schau mir deinen Code mal genauer an (hab momentan eigentlich keine Zeit).

@alle:

Ich hab jetzt folgende zeile

Code:
if left(x$, 2) = "cd" then x$ = "cd" else x$ = x$


zwischen die Labels 1 und 2 eingebaut. Damit geht's einwandfrei.

Soll ich das Teil in die Projektvorstellungen schieben? Was meint ihr?

Gruß s-m-n
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 01.10.2006, 17:02    Titel: Antworten mit Zitat

jetzt etwas OT, betrifft aber den code.

wenn du sowas machst:

Code:

case "j": print "Sie haben JA gew„hlt. Es wurde alles gel”scht, wie Sie es w?nschten."
          case "n": print "Sie haben JA gew„hlt. Es wurde alles gel”scht, wie Sie es w?nschten."


kannst du auch einfach schreiben:

Code:

case "j", "n": print "blub"

_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 01.10.2006, 18:25    Titel: Antworten mit Zitat

Hi s-m-n,
solange wie du noch Syntax-Fragen hast, laß' es lieber noch hier..
Wer allgemeine Fragen zu FreeBASIC hat, schaut weniger häufig in den Projektvorstellungen nach..
Apropos schauen grinsen
Wenn es deine Zeit erlaubt, schau doch ruhig mal meine Modifikation an.
Der Tipp von Jojo ist zwar nicht drin, weil es ja auch sein kann, daß du doch unterschiedliche Antworten haben möchtest..
..ich find es einfach eleganter, schon weil keine Label-Nummern mehr drin sind..
Wenn du, wie ich, mit FORTRAN IV begonnen hättest, wüdest du Label-Nrn auch hassen happy
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz