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:

Das erste Wort fehlt (beim Parser)

 
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
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 29.11.2007, 21:14    Titel: Das erste Wort fehlt (beim Parser) Antworten mit Zitat

Code:
dim as string Codezeile ="print 'das ist ein test'"
dim as integer leerzeichen
dim as string tmptxt1
dim as string tmptxt2
dim as string tmptext

' Anzahl der Leerzeichen feststellen
for i as integer = 1 to len(codezeile)
    if mid(codezeile,i,1)=" " then leerzeichen +=1
next

' Dafür wirds doppelt benötigt (umständlich)
dim as integer leerzeichenpos(leerzeichen)

' Noch mal das gleiche aber jetzt mit speichern der Leerzeichen
leerzeichen = 0
for i as integer = 1 to len(codezeile)
    if mid(codezeile,i,1)=" " then leerzeichen +=1:leerzeichenpos(leerzeichen)=i
   
next



for i as integer = 1 to leerzeichen+1
tmptxt1= mid(codezeile,leerzeichenpos(i)+1,len(codezeile)-leerzeichenpos(i)+1)
if instr(tmptxt1," ") > 0 then
    tmptxt2 = left(tmptxt1,instr(tmptxt1," "))
else
    tmptxt2 = tmptxt1
end if
print tmptxt2
next
sleep

normalerweise sollte er doch auch das erste wort anzeigen.. was er natürlich nicht macht peinlich
//Edit das kleine Problem konnte ich beheben, aber wenn man sich so die zahlen(beim neuen Code) anguckt, besteht dei gefahr eines Bufferowerflows?

Code:
dim as string Codezeile ="es geht doch *g*"
dim as integer leerzeichen
dim as string tmptxt1
dim as string tmptxt2


' Anzahl der Leerzeichen feststellen
for i as integer = 1 to len(codezeile)
    if mid(codezeile,i,1)=" " then leerzeichen +=1
next

' Difinieren
dim as integer leerzeichenpos(leerzeichen)

' Noch mal das gleiche aber jetzt mit speichern der Leerzeichen
leerzeichen = 0
for i as integer = 1 to len(codezeile)
    if mid(codezeile,i,1)=" " then leerzeichen +=1:leerzeichenpos(leerzeichen)=i
   
next


dim as string tmptext
for i as integer = 0 to leerzeichen
tmptxt1= mid(codezeile,leerzeichenpos(i)+1,len(codezeile)-leerzeichenpos(i))
if instr(tmptxt1," ") > 0 then
    tmptxt2 = left(tmptxt1,instr(tmptxt1," "))
else
    tmptxt2 = tmptxt1
end if
print tmptxt2,leerzeichenpos(i)+1,len(codezeile)-leerzeichenpos(i)
next
sleep

_________________
Bis irgendwann... grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



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

BeitragVerfasst am: 30.11.2007, 00:04    Titel: Antworten mit Zitat

Code:
' Dafür wirds doppelt benötigt (umständlich)
DIM AS INTEGER leerzeichenpos(leerzeichen)

könntest du auch mit einem REDIM probieren. Habe keine Ahnung, wie das von der Performance ist, aber all zu viele Leerzeichen werden für gewöhnlich ja nicht erwartet.
(trotzdem solltest du auch die Möglichkeit mehrerer Leerzeichen hintereinander in Betracht ziehen)

Code:
if mid(codezeile,i,1)=" "

läuft mit
Code:
if codezeile[i-1] = 32

ein wenig schneller.

Ein Overflow könnte ich mir durchaus vorstellen, wenn die eingelesenen Zeile seeeehr lang ist und ein paar Milliarden Leerzeichen enthält.
_________________
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
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