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 kann ich Tabulatoren aus einem String entfernen ?

 
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
JPT



Anmeldungsdatum: 27.02.2006
Beiträge: 35

BeitragVerfasst am: 27.02.2006, 20:31    Titel: Wie kann ich Tabulatoren aus einem String entfernen ? Antworten mit Zitat

Hallo,

Ich habe eine Frage zum Auslesen von Dateien, um einen bestimmten Converter zu realisieren.

In einer Zeile dieser Datei habe ich erst Text, dann durch ein Leerzeichen abgetrennte Zahlen.
Ich nehm mal das Beispiel:
Code:

position 50 24 153


Das auslesen davon ist noch kein Problem.
Problematisch wird es erst, wenn davor ein oder mehrere Tabulatoren platziert sind:

Code:

         position 50 24 153


Frage: Wie kann ich eine eingelesene Zeile von Tabulatoren befreien, um sie verarbeiten zu können.

Ich hab es schon mit der simplen Methode
Code:

zeile$ = LTRIM$(zeile$)

probiert, jedoch funktioniert die nicht.
Ebenso verhält es sich mit:
Code:

zeile$ =  MID$( zeile$ , 1 , LEN ( zeile$))


Habt ihr eine Idee ?
_________________
MfG JPT
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 27.02.2006, 20:48    Titel: Antworten mit Zitat

Code:
zeile$ =  MID$( zeile$ , 2 , LEN ( zeile$))

Das erste Zeichen soll ja weg, darum erst ab dem zweiten Starten mit dem Ausschneiden.
(Wenn du beim ersten startest und bis zum letzten Zeichen gehst, ist es etwas Witzlos, weil dann alle Zeichenen ja bleiben)
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
JPT



Anmeldungsdatum: 27.02.2006
Beiträge: 35

BeitragVerfasst am: 27.02.2006, 20:59    Titel: Antworten mit Zitat

hmm... Ich hab mich wohl falsch ausgedrückt... verlegen

Ich zeig euch mal einen Ausschnitt der Datei, die ich einlesen möchte:

Code:

box
   position 50 50 50
   rotation 0
   size 12 21 30
end


Das Problem ist die eigentliche Erkennung dieser Tabulatoren.
Haben die irgend einen bestimmten ASCI-Code, den man filtern könnte ?
Ich könnte mir etwas mit der CHR$ Funktion vorstellen...
_________________
MfG JPT
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
treckertom



Anmeldungsdatum: 27.02.2006
Beiträge: 1

BeitragVerfasst am: 27.02.2006, 22:36    Titel: Antworten mit Zitat

Tabulatur ist ASCII 9.
Gurgel hätte das auch gewusst.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
JPT



Anmeldungsdatum: 27.02.2006
Beiträge: 35

BeitragVerfasst am: 27.02.2006, 23:25    Titel: Antworten mit Zitat

hmm... ich hab's fertig bekommen...

Aber wenn der Tabulator 9 ist, was ist dann 4 ?
Die Leertaste ?

Denn ich hab (rein intuitiv) die 4 gesetzt, und das half.
Die 9 hab ich noch nicht getestet.
_________________
MfG JPT
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pinkpanther



Anmeldungsdatum: 28.05.2005
Beiträge: 79
Wohnort: Wien

BeitragVerfasst am: 27.02.2006, 23:31    Titel: Antworten mit Zitat

Der ASCII-Code für ein Leerzeichen ist 32. Der ASCII-Code 4 ist einfach ein Steuercode ohne entsprechendes Zeichen bzw. entsprechende (Funktions-)Taste auf der Tastatur.
_________________
lG
pinkpanther lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
JPT



Anmeldungsdatum: 27.02.2006
Beiträge: 35

BeitragVerfasst am: 27.02.2006, 23:34    Titel: Antworten mit Zitat

lol

Dann filtere ich jetzt Tabulatoren (9) und irgendetwas anderes (4)
Leerzeichen werde ich noch hinzufügen.
_________________
MfG JPT
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pinkpanther



Anmeldungsdatum: 28.05.2005
Beiträge: 79
Wohnort: Wien

BeitragVerfasst am: 27.02.2006, 23:38    Titel: Antworten mit Zitat

Und wenn ich so fies bin und deine Datei mit "geschützten Leerzeichen" (ASCII-Code 255) infiltriere? lachen
_________________
lG
pinkpanther lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Kai Bareis



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

BeitragVerfasst am: 28.02.2006, 00:01    Titel: Antworten mit Zitat

ASCII 4 ist EOT = End Of Transmission
einfach mal in Qbasic auf die Hilfethemen klicken und dann Ascii Codes anklicken
_________________
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
JPT



Anmeldungsdatum: 27.02.2006
Beiträge: 35

BeitragVerfasst am: 28.02.2006, 00:10    Titel: Antworten mit Zitat

Das wirst du nicht wagen grinsen

geschützte Leerzeichen...*lol*

naja... jetzt hab ich nur das Problem, das ich nicht denken kann... schon spät...
_________________
MfG JPT
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Thomas Antoni



Anmeldungsdatum: 12.10.2004
Beiträge: 220
Wohnort: Erlangen

BeitragVerfasst am: 03.03.2006, 19:03    Titel: Antworten mit Zitat

Ich habe zu dem Problem den folgenden QB-MonsterFAQ - Eintrag entworfen:

***

Frage deutsch
~~~~~~~~~~~~~~~~
Wie ersetze ich Tabulatoren durch Leerzeichen oder lösche sie?


In Textdateien stören oft die dort enthaltenen Tabulatoren, weil sie nicht in
allen Textverarbeitungen, Editoren und Entwicklungsumgebungen gleich angezeigt
werden. Daher kann es wünschenswert sein, in einem Text alle Tabulatoren zu
löschen oder durch eine wählbare Anzahl von Leerzeichen zu ersetzen. Wie kann
ich das mit einem QBasic-Programm bewerkstelligen?


Question English
~~~~~~~~~~~~~~~~
How to replace TABs by blanks or remove them?


Antwort 1
~~~~~~~~~~~~~~~~
[ von Thomas Antoni, 3.3.2006 ]

Zum Suchen und Ersetzen von Text verwendest Du den INSTR()-Befehl. Mein unten
stehendes Programm TAB2SPC.BAS zeigt, wie Du die in einer Textzeile enthaltenen
Tabulatoren durch Leerzeichen ersetzen oder löschen kannst.

Willst Du eine ganze Textdatei entsprechend bearbeiten, dann kannst Du Dich an
meinem Programm REPLACE.BAS orientieren, das im FAQ-Eintrag "Wie suche und
ersetze ich Textstücke in einer Datei?" aufgeführt ist.

Code:

'****************************************************************************
' TAB2SPC.BAS = Tabulatoren durch Leerzeichen ersetzen oder loeschen
' ===========
' Dieses Q(uick)Basic-Programm entfernt alle Tabulatorzeichen (ASCII-Code=9)
' aus einer beliebigen Textzeile und ersetzt sie durch eine waehlbare Anzahl
' von Leerzeichen.
' Gibt der Anwender "0" als Anzahl der Leerzeichen ein, so werden alle
' Tabulatoren ersatzlos geloescht.
'
' (c) Thomas Antoni, 3.3.2006
'****************************************************************************
'
'----- Textvorgabe
CLS
PRINT "Dies ist ein Text mit 2 Tabulatoren:"
line$ = "Die" + CHR$(9) + "Sonne" + CHR$(9) + "scheint"
COLOR 14                       'gelbe Textfarbe
PRINT line$; ""                'Text mit TABs anzeigen
COLOR 7                        'wieder hellgraue Textfarbe
PRINT
PRINT "Durch wieviele Leerzeichen soll jeder TAB ersetzt werden?"
PRINT "(0 fuer ersatzloses Loeschen der TABs)"
INPUT "", leerz%
leerz$ = SPACE$(leerz%) 'String mit der gewuenschten Anzahl von Leerzeichen
'
'----- Tabulatoren ersetzen
lineptr% = 1                                  'Zeilenzeiger initialisieren
'
DO                                            'Schleife ueber alle zeichen
  foundptr% = INSTR(lineptr%, line$, CHR$(9)) 'TAB suchen
  IF foundptr% > 0 THEN                       'TAB gefunden?
    line$ = LEFT$(line$, foundptr% - 1) + leerz$ + MID$(line$, foundptr% + 1)
                                  'TAB ersetzen
    lineptr% = foundptr% + leerz% 'Zeilenzeiger hinter Ersetzungsstelle setzen
    IF lineptr% > LEN(line$) THEN EXIT DO     'Zeile fertig bearbeitet
  ELSE EXIT DO                                'keine TABs gefunden
  END IF
LOOP
'
'----- Geaenderten Text anzeigen
PRINT
PRINT "Hier sind die TABs durch"; leerz%; "Leerzeichen ersetzt:"
COLOR 14
PRINT line$
COLOR 7

_________________
+++ Die beliebte QBasic CD-ROM von QBasic.de - 670 MB QBasic-Stuff mit komfortabler HTML-Oberfläche. Für nur 5 EUR bestellbar auf www.antonis.de/qbcdueb.htm +++
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 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