Textstellen überschreiben

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Ghostmaniac

Betreff: Textstellen überschreiben

BeitragFr, März 12, 2010 11:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi zusammen,
bin nochnicht lange dabei und bräuchte ein bischen hilfe.
Es geht darum das ich aus einer eingelesenen .txt datei
bestimmte textstellen zwischen { und } überschreiben
möchte ... hatte schon gegoogelt usw aber nichts
brauchbares gefunden.
Die Klammern möchte ich dabei mit bearbeiten.
Danke schonmal für eure hilfe.
MFG
Ghost

Midimaster

BeitragFr, März 12, 2010 11:26
Antworten mit Zitat
Benutzer-Profile anzeigen
wo ist das Problem? Beim Laden und speichern der Datei, oder beim Finden der Stellen, nachdem der Text schon in einem String ist?

Im String findest du die Stellen mit "{"-Klammern mit

BlitzBasic: [AUSKLAPPEN]
Da%=Instr(Text$,  "{" , SuchAbStelle%)


Ersetzen machst Du mit

BlitzBasic: [AUSKLAPPEN]
Text$= Left$(Text$, Da) + NeuString$ + Mid$(Text$, Da2%, -1)
 

Ghostmaniac

BeitragFr, März 12, 2010 11:29
Antworten mit Zitat
Benutzer-Profile anzeigen
das problem liegt darin das ich von { bis } verändern will, also eine
unterschiedlich lange zeichenfolge wenn es um eine vorbestimmte
anzahl ginge wüsste ich schon ne möglichkeit jedoch macht mir die
unbekannte länge zu schaffen, naja ich bin halt noch
ein blutiger anfänger. ^^

ozzi789

BeitragFr, März 12, 2010 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
;ozzi789 / Blitzbasic / 12.3.10
;insert txt between is a function that lets you replace a text in a string that is surounded by one or two diffrent signes
;usage:
;insert_txt_between$(Text_you_want_to_edit$,New_text$,firstsign,secondsign)


txt$="left part{old part}right part"
replacetxt$="new part!!"
newtxt$=insert_txt_between$(txt$,replacetxt$,"{","}")
Print newtxt$

WaitKey

Function insert_txt_between$(ftxt$,ntxt$,sign1$,sign2$)
pos1=Instr (ftxt$,sign1$,1) ;Detect how many Characters are left of Sign1
pos2=Instr (ftxt$,sign2$,1) ;Detect how many Characters are right of Sign2
pos2=pos2-1 ;We want the Sign2 also in the String
Local leftpart$=Left(ftxt$,pos1) ;Copy the Left Part of the String (with Sign1) into leftpart$
Local rpos=Len(ftxt$)-pos2 ;Calculate where the right part starts (full lenght- Sign2 Position)
Local rightpart$=Right(ftxt$,rpos);Copy the Right Part of the String (with Sign2) into rightpart$
Return leftpart$+ntxt$+rightpart$ ;Return the left, the new text, and the right part
End Function


Falls du das nicht begreifst oder verstehst (englisch) frag einfach Wink

mfg ozzi
 

Ghostmaniac

BeitragFr, März 12, 2010 13:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
datei = OpenFile("test.txt")
dateizwei = OpenFile("test2.txt")
replacetxt$ = ""

newdatei$=insert_txt_between$(txt$,replacetxt$,"{","}")      
CloseFile datei
WriteString dateizwei, newdatei$
CloseFile dateizwei

CloseFile  datei
End

Function insert_txt_between$(ftxt$,ntxt$,sign1$,sign2$)
   pos1=Instr (ftxt$,sign1$,1) ;Detect how many Characters are left of Sign1
   pos2=Instr (ftxt$,sign2$,1) ;Detect how many Characters are right of Sign2
   pos1=pos1-2 ;We want the Sign2 also in the String
   Local leftpart$=Left(ftxt$,pos1) ;Copy the Left Part of the String (with Sign1) into leftpart$
   Local rpos=Len(ftxt$)-pos2 ;Calculate where the right part starts (full lenght- Sign2 Position)
   Local rightpart$=Right(ftxt$,rpos);Copy the Right Part of the String (with Sign2) into rightpart$
   Return leftpart$+ntxt$+rightpart$ ;Return the left, the new text, and the right part
End Function


so habe ich das jetzt abgeändert aber nu sagt er immer wenn ich starte
Zitat:
parameters must be positive.

was habe ich falsch gemacht?

Midimaster

BeitragFr, März 12, 2010 14:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, bei den Befehlen...
BlitzBasic: [AUSKLAPPEN]
Left(Text$, "{", Da%)

... oder MID(...) musst du peinlich darauf achten, dass du nicht versehentlich als Startwert Da% eine 0 übergibst. Es sind nur Werte von Pos. 1 bis Pos. Len(text) erlaubt.

Die 0 tritt bei INSTR() dann auf, wenn das Zeichen gar nicht gefunden wird.

In deinem Beispiel vergisst du komplett den Text aus der Datei überhaupt in eine Variable Txt$ einzulesen.

BlitzBasic: [AUSKLAPPEN]
Datei = OpenFile("test.txt")
DateiZwei = OpenFile("test2.txt")
ReplaceTxt$ = ""

While Eof(Datei)=0
Txt=ReadLine(Datei)
newTxt$=insert_txt_between(Txt, ReplaceTxt,"{","}")
WriteLine DateiZwei, newTxt
Wend
CloseFile datei
CloseFile dateizwei
End

Function insert_txt_between$(ftxt$, ntxt$, sign1$, sign2$)
pos1=Instr (ftxt$, sign1$, 1)
pos2=Instr (ftxt$, sign2$, pos1+1)
pos1=pos1-2
If (Pos1=0) Or (Pos2=0) Then
Return ftxt
EndIf
Local leftpart$=Left(ftxt$, pos1)
Local rpos=Len(ftxt$) - pos2
Local rightpart$=Right(ftxt$, rpos)
Return leftpart$ + ntxt$ + rightpart$
End Function


So wäre es besser: Die Datei öffnen, Zeile um Zeile einlesen, konvertieren und in die 2.Datei zurückschreiben. In der Funktion findest du jetzt eine Stelle, die das komplette Fehlen der "{" "}"-Zeichen abfängt und dann korrekterweise den Originalstring zurückgibt.
  • Zuletzt bearbeitet von Midimaster am Fr, März 12, 2010 16:00, insgesamt einmal bearbeitet
 

Ghostmaniac

BeitragFr, März 12, 2010 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
juhu es funktioniert danke euch nochmal^^

ozzi789

BeitragFr, März 12, 2010 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte überleg dir auch wieso, so ist der Lerneffekt für dich am grössten Wink
mfg
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

Ghostmaniac

BeitragFr, März 12, 2010 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
werde ich machen^^

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group