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:

Wie teile ich einen String?
Gehe zu Seite 1, 2  Weiter
 
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
Manu



Anmeldungsdatum: 16.07.2006
Beiträge: 174
Wohnort: Bayern

BeitragVerfasst am: 16.12.2006, 21:44    Titel: Wie teile ich einen String? Antworten mit Zitat

Hallo,

wenn ich in der Variable string$ das wort "Hallo Welt" gespeichert habe?
wie trenne ich diesen string so, dass string1$, "Hallo" heißt und string2$, "Welt" heißt.

danke

mfg Manu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



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

BeitragVerfasst am: 16.12.2006, 21:47    Titel: Antworten mit Zitat

Schau dir mal in der Online-Hilfe von QB die Funktionen Left$, Right$ und Mid$ an.
Aber auch in der QB-MonsterFAQ steht so einiges zum Trennen von Strings. lächeln

Sonst bilde ich mir ein, gab's das hier auch schon öfter.
_________________
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: 16.12.2006, 21:51    Titel: Antworten mit Zitat

Hihihi,
@mao:
Spielverderber grinsen
Ich hatte grade so einen schönen Text überlegt..
..aber du hast noch den Hinweis auf Instr() vergessen, oder gibts das bei QB nicht?
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
Mao



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

BeitragVerfasst am: 16.12.2006, 22:07    Titel: Antworten mit Zitat

Hehe, sry, aber kannst mir den Text ja mal PMen. grinsen

Instr gibts auch bei QB. Is' mir erst jetzt, wo du's erwähnt hast, eingefallen, dass es damit viel leichter geht. durchgeknallt lachen
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Manu



Anmeldungsdatum: 16.07.2006
Beiträge: 174
Wohnort: Bayern

BeitragVerfasst am: 16.12.2006, 22:17    Titel: Antworten mit Zitat

mit left right und mid ist es ehre ned so gut
weil da alle meine zeichen vom ersten wort immer gleich sein müssen?

könnt ihr mir es vll. mal mit einem beispiel demonstrieren mit instr oder so

danke

mfg Manu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



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

BeitragVerfasst am: 16.12.2006, 22:31    Titel: Antworten mit Zitat

Naaa, müssen nicht gleich sein. zwinkern
Das kann man mit 'ner FOR..NEXT-Schleife lösen. grinsen

Trotzdem mal 'nen Beispiel mit Instr:
Code:

test$="Hallo Welt"
PRINT LEFT$(test$, INSTR(test$, " ") - 1)
PRINT RIGHT$(test$, LEN(test$) - INSTR(test$, " "))

Funktioniert in der Fassung allerdings nur, wenn's, wie bei dir im Moment, 2 Worte sind. lächeln
Das andere müsste dann anders geschachtelt sein, zum Beispiel müsste der zuletzt getrennte String etc. gespeichert werden.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Manu



Anmeldungsdatum: 16.07.2006
Beiträge: 174
Wohnort: Bayern

BeitragVerfasst am: 16.12.2006, 22:45    Titel: Antworten mit Zitat

danke für die schnelle antwort
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 16.12.2006, 23:01    Titel: Antworten mit Zitat

Schau mal da ziemlich weit unten.... da hab ich mal so eine Funktion geschrieben: http://forum.qbasic.at/viewtopic.php?t=871&highlight=nwort
_________________
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
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 17.12.2006, 00:05    Titel: Antworten mit Zitat

[Schleichwerbung]
Artikel auf meiner HP zwinkern
[/Schleichwerbung]

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


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

BeitragVerfasst am: 17.12.2006, 14:04    Titel: Antworten mit Zitat

In QB gibt es noch keine split()-Funktion wie in vielen neueren Programmiersprachen, u.a. VBScript. Mit etwas Fantasie lässt sich aber eine Ersatz-SUB programmieren:

http://beilagen.dreael.ch/QB/SPLIT.BAS
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Manu



Anmeldungsdatum: 16.07.2006
Beiträge: 174
Wohnort: Bayern

BeitragVerfasst am: 18.12.2006, 16:45    Titel: Antworten mit Zitat

gibt es sonst noch ein paar lösungen bei beliebig vielen wörtern

danke

mfg Manu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 18.12.2006, 17:28    Titel: Antworten mit Zitat

Hallo

Manu hat Folgendes geschrieben:
gibt es sonst noch ein paar lösungen bei beliebig vielen wörtern


Ein paar? An wieviele Lösungsansätze hast du da denn so gedacht? In den oben angegebenen Links sind ja schon verschiedene Möglichkeiten - auch für beliebig viele Wörter - besprochen worden. Bei den Beispielen dort brauchst du nur die Dimensionierung des Datenfelds anpassen, in denen die einzelnen Wörter gespeichert werden sollen. Wie wär's, wenn du kurz erklärst, was dir an diesen Beispielen nicht passt bzw. was davon du nicht verstehst oder du genau vorhast. Wenn du z.B. die Worte sowieo nacheinander auswertest, kannst du den String auch nach und nach im Programm zerlegen und brauchst die einzelnen Worte garnicht zu speichern.

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


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

BeitragVerfasst am: 18.12.2006, 21:02    Titel: Antworten mit Zitat

Die von mir genannte split()-Funktion besitzt exakt die Eigenschaft, beliebig viele Wörter zu trennen (splitten! Daher der Name...). Dabei ist es in jeder mir bekannten Programmiersprache/Compiler üblich, dass man die Wörter in einer Feldvariable (Array) bekommt.

Ich habe einfach im QB-Codebeispiel eine kleine SUB-Routine präsentiert, die genau dasselbe wie in VBScript und PHP tut.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Manu



Anmeldungsdatum: 16.07.2006
Beiträge: 174
Wohnort: Bayern

BeitragVerfasst am: 26.12.2006, 18:03    Titel: Antworten mit Zitat

kann ich dann die einzelnen wörter(die getrennt wurden) in einzelnen strings speichern z.b. folgendermaßen

wort1$ = "hallo"
wort2$ = "wie"
wort3$= "gehts"
wort4$ = "dir"

danke

mfg Manu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 26.12.2006, 18:21    Titel: Antworten mit Zitat

Manu hat Folgendes geschrieben:
kann ich dann die einzelnen wörter(die getrennt wurden) in einzelnen strings speichern z.b. folgendermaßen

wort1$ = "hallo"
wort2$ = "wie"
wort3$= "gehts"
wort4$ = "dir"

In einem Datenfeld kannst du sie dann speichern. So wie du es vorschlägst, ist das nicht besonders gut und vor allem nicht einfach machbar, wenn du die Anzahl der gesplitteten Wörter nicht kennst. Nur wenn es z.B. immer zwei ("Hallo,Welt") sind, kannst du auch feste Variablen nehmen (teilA$, teilB$).
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Manu



Anmeldungsdatum: 16.07.2006
Beiträge: 174
Wohnort: Bayern

BeitragVerfasst am: 26.12.2006, 18:24    Titel: Antworten mit Zitat

wie speichere ich sie dann in einem datenfeld und welchen name und das feld dann?

danke

mfg Manu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 26.12.2006, 18:30    Titel: Antworten mit Zitat

Lad dir mal dreaels Code SPLIT.BAS runter. Da ist das exzellent gezeigt, wie das funktioniert. lächeln
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Manu



Anmeldungsdatum: 16.07.2006
Beiträge: 174
Wohnort: Bayern

BeitragVerfasst am: 26.12.2006, 18:53    Titel: Antworten mit Zitat

sorry das ich jetzt nochmla frage, aber wie heißen bei split.bas die einzelnen datenfelder

danke

mfg Manu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 26.12.2006, 18:59    Titel: Antworten mit Zitat

Änder das
Code:
DIM a$(4 to 10)

am Anfang in
Code:
DIM a$(1 to 7)

Dann hast du die einzelnen Strings wie folgt abrufbar:
Code:
PRINT a$(1)
PRINT a$(2)
x%=4
PRINT a$(x%)
SLEEP: END

Keine Ahnung, wieso dreael bei seinem Array mit Index 4 anfängt. lächeln
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Manu



Anmeldungsdatum: 16.07.2006
Beiträge: 174
Wohnort: Bayern

BeitragVerfasst am: 26.12.2006, 19:08    Titel: Antworten mit Zitat

danke,
dann wären meine fragen geklärt
der sub läuft mit den arrys von 1 bis 7 aber genauso oder

danke


mfg Manu

edit:\\ kann ich aus dem sub dann die einzelnen strings und und die anzahl der wörter ins normale programm zurückbringen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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