Durch Replace hängt sich Programm auf

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

 

aimheld

Betreff: Durch Replace hängt sich Programm auf

BeitragFr, Okt 31, 2008 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,

ich hänge momentan an etwas, bei dem ich einfach nicht weiterkomme.
Ich versuche grade ein Programm zu schreiben, das eine Datei nach einer Zeichenfolge durchsucht und durch eine beliebig andere ersetzt. Da dachte ich, Replace passt da perfekt.
Allerdings hängt sich das Programm in der Function bei Replace auf.

Code: [AUSKLAPPEN]

[..]

datei_textfeld = CreateTextField(100,10,150,20,fenster)
suchen_textfeld = CreateTextField(100,40,150,20,fenster)
ersetzen_textfeld = CreateTextField(100,70,150,20,fenster)

[..]

ersetzen(GadgetText(suchen_textfeld),GadgetText(ersetzen_textfeld))


Function ersetzen(suchtext$,ersetzungstext$)
   
   
   datei = ReadFile(GadgetText(datei_textfeld))
   out = WriteFile("out.txt")

   local zeile$

   
   While Not Eof(datei)
      
      zeile = ReadLine(datei)
      
      If Instr(zeile,suchtext) <> 0 Then
         
         neue_zeile = Replace(zeile,suchtext$,ersetzungstext$)
         WriteLine out,neue_zeile
         
      EndIf
      
   Wend
   
   CloseFile datei
   CloseFile out
   
End Function



Das sind erstmal die wichtigen stellen.

Ich hoffe ihr könnt mir einen Tipp geben Wink
Danke für eure Hilfe

Mfg
aimheld

EDIT

Hier ist der gesammte Code. Vielleicht habt ihr es so leicher. Oder ihr könntet es an eurem System testen, vielleicht liegt der Fehler nicht am Code.

Code: [AUSKLAPPEN]

; ------------------------Umgebung erstellen ------------------------------

fenster = CreateWindow("Zeilenersetzung",100,100,400,180,0,1)

datei_label = CreateLabel("Datei:",10,13,40,15,fenster)
Global datei_textfeld = CreateTextField(100,10,150,20,fenster)
datei_button = CreateButton("Durchsuchen",300,12,85,20,fenster)

suchen_label = CreateLabel("Suchen nach:",10,43,70,15,fenster)
Global suchen_textfeld = CreateTextField(100,40,150,20,fenster)

ersetzen_label = CreateLabel("Ersetzen durch:",10,73,75,15,fenster)
Global ersetzen_textfeld = CreateTextField(100,70,150,20,fenster)

start_button = CreateButton("Starten",10,110,50,20,fenster)
loeschen_button = CreateButton("Löschen",80,110,50,20,fenster)

status_label = CreateLabel(0,180,113,200,20,fenster)

; --------------------------------------------------------------------------

Global ms#,ms_ende#,zeit#,datei,out
SetGadgetText status_label,"Bereit"

Repeat
   Delay 10
   event = WaitEvent()
   
   
   If Event = $401 Then
      Select EventSource()
            
         Case datei_button                                               
            
            old_rfile$ = rfile$
            rfile$=RequestFile("Datei zum durchsuchen wählen","*",0)
            
            If rfile$ = "" And old_rfile$ <> "" Then
               SetGadgetText datei_textfeld,old_rfile$
               
            ElseIf rfile$ <> "" Then
               SetGadgetText datei_textfeld,rfile$
               
            EndIf
            
         Case loeschen_button                                              
            
            SetGadgetText datei_textfeld,""
            SetGadgetText suchen_textfeld,""
            SetGadgetText ersetzen_textfeld,""
            SetGadgetText status_label,"Einträge gelöscht"
            
         Case start_button                                             
            
            SetGadgetText status_label,"Gestartet.."
            
            ersetzen(GadgetText(suchen_textfeld),GadgetText(ersetzen_textfeld))
            
            SetGadgetText status_label,"Fertig nach " + zeit + " Millisekunden."
            
      End Select
   EndIf
   
   
Until event=$803
End

Function ersetzen(suchtext$,ersetzungstext$)
   
   ms = MilliSecs()
   
   datei = ReadFile(GadgetText(datei_textfeld))
   out = WriteFile("out.txt")
   
   Local zeile$
   
   
   While Not Eof(datei)
      
      
      zeile = ReadLine(datei)
      
      
      If Instr(zeile,suchtext) <> 0 Then
         
         neue_zeile = Replace(zeile,suchtext,ersetzungstext)
         WriteLine out,neue_zeile
         
      EndIf
      
   Wend
   

   CloseFile datei
   CloseFile out
   
   ms_ende = MilliSecs()
   zeit = ms_ende - ms
   
End Function
  • Zuletzt bearbeitet von aimheld am Fr, Okt 31, 2008 18:09, insgesamt 5-mal bearbeitet

ZaP

BeitragFr, Okt 31, 2008 12:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast doch ohnehin schon GadgetText(suchen_textfeld) und GadgetText(ersetzen_textfeld) als Argumente an die Funktion ersetzen() gegeben, dann kannst du sie doch auch innerhalb von der replace Funktion verwenden.
Starfare: Worklog, Website (download)
 

aimheld

BeitragFr, Okt 31, 2008 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ZaP,

danke dir für deine Antwort.
Richtig, darauf hätte ich achten sollen. Danke für den Hinweis Very Happy

Das Problem besteht natürlich noch weiterhin. Ich habe die Stelle mit ZaPs Hinweis editiert.

flona

BeitragSa, Nov 01, 2008 12:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst hier statt GadgetText TextFieldText verwenden, dann gehts:
Code: [AUSKLAPPEN]
ersetzen(TextFieldText(suchen_textfeld),TextFieldText(ersetzen_textfeld))
www.Dreier-Florian.kilu.de
Intel Core 2 Quad Q9400 | Zotac 9800GT | 4GB RAM | 1TB HDD | Windows 7 Professional 32bit
 

aimheld

BeitragSa, Nov 01, 2008 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahhh ich liebe dich ^^ Dankeschön.

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group