Seite 1 von 1

Remove String Problem, Tab entfernen & Teile entfernen

Verfasst: 22.12.2005 22:07
von Zero_Cool
Abend

Ich habe wieder mal meine Probleme mit den Strings.

Ich würde gerne eine Datei nach einem Wort durchsuchen ( FindString ), jede Stelle an der das Wort vorkommt, sollte gelöscht werden. ( Remove String ) Sozusagen, suche Wort und lösche es, bis es dieses Wort nicht mehr gibt. Danach sollte das File geschlossen und gespeichert werden.

Diesen Code könnte ich verwenden, jedoch nützt mir der Debug Befehl in einer Konsolenanwendung leider nicht viel. Läuft ja nicht, oder Irre ich mich. Eigentlich müsste nur durchsucht wernde, ersetzt werden und gespeichert werdne.

Code: Alles auswählen

Text$ = "xyz123" 
Text$ = RemoveString(Text$, "xyz123") 
Debug Text$ 
Kann ich automatisch alle Tabulatoren in einem TXT File löschen?

Drittes Problem: Ich würde gerne automatisch Teile einer Zeile löschen, aber erst ab einem gewissen Zeichen. Soll heissen, das Programm sollte alle Zeilen die das Wort "abc" beinhalten suchen, und sollte dan in dieser Zeile, den gesammten Inhalt der nach dem ersten Sonderzeichen "'?" geschireben steht löschen?

Verfasst: 22.12.2005 22:17
von ts-soft
>> Kann ich automatisch alle Tabulatoren in einem TXT File löschen?

Code: Alles auswählen

Text$ = ReplaceString(Text$, #TAB$, "")
oder Tab durch Space ersetzen:

Code: Alles auswählen

Text$ = ReplaceString(Text$, #TAB$, " ")
3. Problem kannste ja langsam alleine lösen! FindString um die Postion des Fragezeichens zu finden, und Right() oder Mid um abzuschneiden

Verfasst: 22.12.2005 22:26
von Zero_Cool
Dank für die Hilfe. Ja ich weiss, irgendwie stehe ich noch ein wenig auf der Leitung. Hoffe das ändert sich bald. Habe den durchblick noch nicht ganz.

Wäre dieser Code Korrekt, um die Tab zu entfernen?

Code: Alles auswählen

File1 = ReadFile(#PB_Any, "c:\Dev\_001.tmp") 
If File1 
  File2 = CreateFile(#PB_Any, "c:\Dev\_002.tmp") 
  If File2 
    While Eof(File1) = #False 
      UseFile(File1) 

Text$ = ReplaceString(Text$, #TAB$, "")



    Wend 
    CloseFile(File1) 
    CloseFile(File2) 
  EndIf 
EndIf
Das gleiche würde dann ja auch für das löschen von Wörtern gelten:

Code: Alles auswählen

File1 = ReadFile(#PB_Any, "c:\Dev\_001.tmp") 
If File1 
  File2 = CreateFile(#PB_Any, "c:\Dev\_002.tmp") 
  If File2 
    While Eof(File1) = #False 
      UseFile(File1) 
      Text$ = ReadString() 
      If FindString(Text$, "abc1)  = 1
ReplaceString(Text$, "abc","")

      EndIf 
    Wend 
    CloseFile(File1) 
    CloseFile(File2) 
  EndIf 
EndIf

Verfasst: 22.12.2005 22:44
von ts-soft
RemoveString ist wohl etwas schneller, als ReplaceString mit "", aber sehe Dir doch einfach mal alle Befehle in der StringLib von PB an und probiere es aus, kann man sehr viel mit machen :wink:

Verfasst: 22.12.2005 22:57
von Zero_Cool
Jep, danke für die Info. Habe nun einen Code geschrieben. Jedoch scheint er leider noch nicht zu funktionieren.

Code: Alles auswählen

File1 = ReadFile(#PB_Any, "c:\Dev\_002.tmp") 

    While Eof(File1) = #False 

      Text$ = ReadString() 
      Remove$ = "<a title="
      
      If FindString(Text$, Remove$, 1)  = 1
      RemoveString(Text$, Remove$)
      
      EndIf 
    Wend 
    CloseFile(File1)  


Sinn des Codes ist es alle "abc" zu löschen.

Verfasst: 22.12.2005 23:21
von ts-soft

Code: Alles auswählen

Text$ = RemoveString(Text$, Remove$)

Verfasst: 22.12.2005 23:33
von Zero_Cool
Irgendwie scheine ich ein Brett vor dem Kopf zu haben!! Ist halt bei Anfängern die am Anfang zuviel wollen... :-(

"<a title=" Wird immer noch nicht gelöscht...

Code: Alles auswählen

File1 = ReadFile(#PB_Any, "c:\Dev\_001.tmp") 

    While Eof(File1) = #False 

      Text$ = ReadString() 
      Remove$ = "<a title="
      
      If FindString(Text$, Remove$, 1)  = 1
      Text$ = RemoveString(Text$, Remove$)
      
      EndIf 
    Wend 
    CloseFile(File1) 

Verfasst: 23.12.2005 11:19
von Batze
Wenn du Findstring() = 1 abfragst löscht er es nur wenn das Wort ganz am Anfang steht.
PB-Hilfe hat geschrieben: Position = FindString(String$, SuchString$, StartPosition)
Beschreibung

Versucht den 'Suchstring$' im angegebenen 'String$' - beginnend an der angegebenen Position ('StartPosition') - zu finden. Wurde der String gefunden, wird dessen Position (in Anzahl der Zeichen, beginnend bei 1) zurückgegeben. Wurde der String nicht gefunden, gibt die Funktion 0 zurück.
Also ließ die Hilfe genauer. Denn die Rückgabewerte sind schon oft verwirrend, da hab ich auch schon oft Fehler gemacht.

PB-Hilfe hat geschrieben: String$ = RemoveString(String$, LöschString$ [, Modus])
Beschreibung

Ermittelt alle Vorkommen des 'LöschString$' im angegebenen 'String$' und entfernt diese.
Das heißt, RemoveString() tut genau das was du brauchst, und wenn der gesuchte String nicht drin ist gibt es halt den Orginalstring zurück.
Deswegen kannst du dir das If Findstring() sparen. :allright:

Verfasst: 23.12.2005 22:31
von Zero_Cool
Einmal versuche ich es noch, sonst gebe ich es auf... :-(


Folgender Code funktioniert leider immer noch nicht. Ich lasse das Programm laufen, jedoch befinden sich immer noch alle abc im Text.

Code: Alles auswählen

File1 = ReadFile(#PB_Any, "c:\Dev\_001.tmp") 

    While Eof(File1) = #False 

      Text$ = ReadString() 
      
Text$ = ReplaceString(Text$, "abc", "")

    Wend 
    CloseFile(File1) 

Code: Alles auswählen

File1 = ReadFile(#PB_Any, "c:\Dev\_001.tmp") 

    While Eof(File1) = #False 

      Text$ = ReadString() 
      Remove$ = "abc"

      Text$ = RemoveString(Text$, Remove$)
      
    Wend 
    CloseFile(File1) 

Verfasst: 23.12.2005 22:49
von edel
Wenn du Zeichen in der Datei _001.tmp loeschen moechtest
musst du sie auch wieder hineinschreiben.

Code: Alles auswählen

File1 = ReadFile  (#PB_Any,"c:\Dev\_001.tmp")
File2 = CreateFile(#PB_Any,"c:\Dev\_002.tmp") ; 

While Eof(File1) = #False
  UseFile(File1)
  Text$  = ReadString() 
  Text2$ + ReplaceString(Text$, "abc", "")
  UseFile(File2)
  WriteStringN(Text2$) 
Wend

CloseFile(File1) 
CloseFile(File2)