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:

Problem bei Bearbeitung eines Strings

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



Anmeldungsdatum: 28.02.2005
Beiträge: 112
Wohnort: Wildberg

BeitragVerfasst am: 29.03.2005, 20:13    Titel: Problem bei Bearbeitung eines Strings Antworten mit Zitat

hallo,
schon wieder n problem weinen
sorry.
folgendes prog soll einfach nur in der zeichenkette text$ ein "!" finden.Tut es aber nicht.
Code:

text$ = "abc!defg"

DO
x = x + 1
b$ = LEFT$(text$, x)
SELECT CASE b$
CASE CHR$(33): PRINT "! gefunden"
CASE ELSE: s = s
END SELECT
PRINT x, s
LOOP UNTIL x = LEN(text$)


Danke im vorraus,

otti
_________________
Gute Musik lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Kai Bareis



Anmeldungsdatum: 10.09.2004
Beiträge: 545
Wohnort: Baden Würtemberg

BeitragVerfasst am: 29.03.2005, 20:22    Titel: Antworten mit Zitat

das Programm geht deswegen nicht, da du jedes Zeichen einzelnt einlesen musst!
Code:
text$ = "abc!defg"

DO
x = x + 1
b$ = MID$(text$, x,1)
SELECT CASE b$
CASE CHR$(33): PRINT "! gefunden"
CASE ELSE: s = s
END SELECT
PRINT x, s
LOOP UNTIL x = LEN(text$)


sollte dann eigentlich gehen
Edit: LEFT$(Zeichenkette,n) liest den String von Links aus ein um n Stellen
bei MID$ ist es etwas anderst dort lässt sich bestimmen von wo er anfangen soll und wieviel Zeichen er einlessen soll
_________________
MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 29.03.2005, 20:29    Titel: Antworten mit Zitat

Oder man kann sich das ganze ersparen, und mit INSTR arbeiten.
Bsp:
Code:

LINE INPUT Text$
IF INSTR(Text$, "!") THEN PRINT "Da is n Aufrufezeichen drin!"


jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 29.03.2005, 20:30    Titel: Antworten mit Zitat

Oder du benutzt die QB-Integrierte Methode INSTR:

Code:

text$="abc!defg"

Stelle = INSTR(text$, "!")


Wenn "!" nicht gefunden wird, ist Stelle 0. Ansonsten ist es die Position im String, an der "!" steht.
Das Praktsiche ist, dass INSTR auch mit längeren Ketten funktioniert, z.B.

INSTR(text$, "abc")


Viel Spaß!
Ciao
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 29.03.2005, 20:31    Titel: Antworten mit Zitat

Dusky_Joe, du Antwort-Klauer durchgeknallt durchgeknallt durchgeknallt zwinkern

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 29.03.2005, 20:35    Titel: Antworten mit Zitat

Sorry, wir waren wohl ziemlich zur selben Zeit mit den Antworten zur stelle *G*
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 29.03.2005, 20:37    Titel: Antworten mit Zitat

Jo, eine Minute Unterschied.
Da macht man nix...

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
otti



Anmeldungsdatum: 28.02.2005
Beiträge: 112
Wohnort: Wildberg

BeitragVerfasst am: 30.03.2005, 11:50    Titel: ok,aber ... Antworten mit Zitat

..Danke erstmal ,aber was ,wenn in einem code mehre ! sind,oder wenn auch "?" gesucht werden sollen?
also..:
Code:
text$="12!45?78!9?"


Danke im vorraus ,

greetz
otti
_________________
Gute Musik lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 30.03.2005, 12:35    Titel: Antworten mit Zitat

Wenn du die genaue Position, an der z.B. ein "!" ist, wissen willst, musst du schon
eine eigene Routine bauen.
Bsp:
Code:

Text$ = "Hallo!"
FOR i = 1 TO LEN(Text$)
 IF MID$(Text$, i, 1) = "!" THEN PRINT "Ein ! an Position "; i; "gefunden!"
NEXT i


Das kann man dann für andere Zeichen leicht modifizieren.

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 30.03.2005, 12:46    Titel: Antworten mit Zitat

Sobald du mehrere Sachen suchst, kommst du mit einem INSTR nicht mehr aus. Dann solltest du mit einer Schleife arbeiten.

Wenn du zum Beispiel nur die Anzahl der Fragezeichen (nicht die Position) haben willst hier der Ansatz.

text$ = "abc?d??efghij?"
such$ = "?"
loesch$ = "*"
gefunden = 0

tempText$ = text$
while instr(temptext$, such$)
gefunden = gefunden + 1
mid$(temptext$, instr(temptext$) = loesch$
wend


Diese Schleife liefert irgendwann mal den Wert gefunden zurück. Habs noch nicht getestet, funktioniert bestimmt auch noch nicht!

Die Schleife soll mit INSTR das nächste Fragezeichen finden, die gefunden-Variable um eins erhöhen und dann das gefundene Fragezeichen durch ein anderes ersetzen. Dadurch findet INSTR immer ein neues Fragezeichen. Bei mid$ bin ich mir gerade nicht so sicher, ob das so klappt. Hab leider gerade kein QB zur Hand.


EDIT:

Naja und hier der komplette getestete Code
Code:

'von SpionAtom

1 CLS

text$ = "abc?def?g???hijk?lmno?"
such$ = "?"
loesch$ = "*"
gefunden% = 0


tempText$ = text$
WHILE INSTR(tempText$, such$) > 0
        gefunden% = gefunden% + 1
        MID$(tempText$, INSTR(tempText$, such$)) = loesch$
WEND


EDIT (die zweite):
Also, da kann man auch gut eine FUNCTION draus machen. Ich in richtig selbstverliebt in meinen Code. grinsen
Was man natürlich beachten muss, ist, dass such$ und loesch$ die selbe Länge haben müssen. Sonst gibst wohl Stress mit der Schleife geschockt

EDIT (die dritte und hoffentlich die letzte):
Inzwischen mag ich meinen Code überhaupt nicht mehr. Das was mein Code vergleichsweise kompliziert und nicht zu durchschauen macht, macht eine einfache FOR..NEXT-Schleife mindestens genauso gut. Schade...
mit dem Kopf durch die Mauer wollen
_________________
Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 30.03.2005, 20:35    Titel: Antworten mit Zitat

jb hat Folgendes geschrieben:
Wenn du die genaue Position, an der z.B. ein "!" ist, wissen willst, musst du schon eine eigene Routine bauen.

Falsch! INSTR liefert exakt die Position des gefundenen Strings zurück, womit keine eigenen Routinen nötig sind. Falls der String nicht gefunden wurde, dann wird 0 zurückgeliefert.

Weitere Details in der QB-Online-Hilfe zu INSTR().
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 30.03.2005, 21:07    Titel: Antworten mit Zitat

Huuups peinlich peinlich peinlich .
Wusste ich gar nicht. Wollte keinen Müll erzählen, sorry!!! verlegen

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht 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 QBasic. 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