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:

Ist in FreeBasic ein INPUT aus einem String möglich?

 
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
9816



Anmeldungsdatum: 27.03.2012
Beiträge: 4

BeitragVerfasst am: 27.03.2012, 19:30    Titel: Ist in FreeBasic ein INPUT aus einem String möglich? Antworten mit Zitat

Kann man in FreeBASIC durch INPUT einen String parsen lassen - also anstatt aus einer Datei aus einem String lesen und wenn ja wie. Hintergrund: Ich möchte aus einer Datei "Komma" separierte Werte in Zeilen lesen, aber die Zahl der Werte in der Zeile liegt nicht vorher fest und ich möchte jetzt keinen eigenen Parser schreiben. In Pseudo Schreibweise
[ lineinput z$
input from z$ a,b,c,d]

Es wäre hilfreich wenn dann bei nicht mehr vorhandenen Werten "Nichts" bzw. NaN zurückgegeben wird.

Danke im Voraus
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 27.03.2012, 19:37    Titel: Antworten mit Zitat

INPUT liest nur aus der Standardeingabe (üblicherweise Konsole) oder einer Datei; zum Parsen ist der Befehl nicht gedacht. Nach Komma zerlegen ist aber mithilfe von INSTR gar nicht schwer. Ansonsten kannst du natürlich auch deinen String in eine temporäre Datei schreiben und dann mit INPUT wieder auslesen; das ist dann allerdings schon eine kuriose Vorgehensweise ...

NaN gibt es in FreeBASIC zwar, kommt aber meines Wissens nur bei besonderen Rechenoperationen heraus und niemals beim Umwandeln von String in Zahlenwerte - da wird VAL und Konsorten zu Rate gezogen, und die liefern immer eine Zahl, im Zweifelsfalle 0.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 27.03.2012, 19:45    Titel: Antworten mit Zitat

Hallo und willkommen im Forum!

Zum Trennen der CSV-Zellen würde sich in dem Fall eine String-Split-Routine sehr gut eignen, die einen String anhand eines Trennzeichens auf ein Datenfeld (Array) aufteilt.

Beispiel:
Code:
Dim As String csv = "123,456,789,343"
' *** Hier Split-Funktionsaufruf einfügen ***
' [...]
' Annahme: Ergebnis der Funktion ist jetzt das Array Zahl().
Dim i As Integer  'Laufindex
' Alle Zahlen im Array durchlaufen - beginnend mit dem kleinsten Index und endend beim größten.
For i = LBound(Zahl) To UBound(Zahl)
   Print Zahl(i)
Next i
Sleep: End


StringSplit-Routinen wurden im Forum und im FreeBASIC-Portal schon öfters gepostet. Eine davon findest du z.B. hier:
http://www.freebasic-portal.de/code-beispiele/string-funktionen/stringsplit-156.html
Lies dir das Code-Beispiel am besten mal in Ruhe durch. Ich denke, mit dem Beispiel wird sich das Problem hier gut lösen lassen.

Viele Grüße!
Sebastian
_________________

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
9816



Anmeldungsdatum: 27.03.2012
Beiträge: 4

BeitragVerfasst am: 27.03.2012, 20:18    Titel: Antworten mit Zitat

Hallo,

danke für den Tip mit String Split (hatte unter parse, tokens gesucht aber nichts gefunden).
Wie ist es eigentlich performancemäßig, wenn ich in einer FOR Schleife durch den String laufe und dann die einzelnen Abschnitte in ein Stringarray speichere? So kann ich dann auch mehrfache Leerzeichen als einen Trenner ansehen. Zeitmäßig dürfte ein VAL() Aufruf ja keinen Unterschied machen, ob er intern im INPUT Befehl oder separat gemacht wird.

Ich hatte gefragt, da ich mich dunkel daran erinnere, INPUT aus einem String schon mal in BASIC (evtl. HP-BASIC) gemacht zu haben.

Viele Grüße
9816
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 27.03.2012, 20:40    Titel: Antworten mit Zitat

Hi,
du kannst dir selber ansehen, wie sich FB-Befehle geschwindigkeitstechnisch
(um performant mal zu vermeiden) verhalten: siehe hier
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