Text-Datei

Anfängerfragen zum Programmieren mit PureBasic.
Marc-21
Beiträge: 39
Registriert: 11.02.2008 19:37

Text-Datei

Beitrag von Marc-21 »

Hi möchte gerne das eine Text-Datei komplett durch sucht wird .
Soweit habe ich das auch aber wenn ich sage er soll was bestimmtest finden hört es sofort auf und sucht nicht noch mal nach dem Suchwort es kommt mehrfach vor .
Wie bekomme ich es hin das er alle übereinstimmungen findet?
Und den im CLipbord speichert?


If ReadFile(0, "C:\test.txt")
While Eof(0) = 0
Code$+ReadString(0)
Wend
Code$ = Right(Code$, Len(Code$)-FindString(Code$, "http://download", 0)+1)
Code$ = Left(Code$, FindString(Code$, " STYLE=", 0))
MessageRequester("info", Code$)

Else
MessageRequester("Information","Konnte Datei nicht öffnen!")
EndIf

Kann einer helfen
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Text-Datei

Beitrag von Kiffi »

wenn Du ohnehin den gesamten Inhalt der Datei lesen willst, böte sich an,
dieses in einem Rutsch zu tun (ist schneller als das zeilenweise Lesen):

Code: Alles auswählen

FF=ReadFile(#PB_Any, "C:\test.txt")
If FF
  Code$ = Space(Lof(FF))
  ReadData(FF, @Code$, Len(Code$))
  CloseFile(FF)
EndIf
Marc-21 hat geschrieben:Und den im CLipbord speichert?

Code: Alles auswählen

SetClipboardText(Code$)
Grüße ... Kiffi
a²+b²=mc²
Marc-21
Beiträge: 39
Registriert: 11.02.2008 19:37

Beitrag von Marc-21 »

danke
Marc-21
Beiträge: 39
Registriert: 11.02.2008 19:37

Beitrag von Marc-21 »

noch eine frage wie stelle ich das an das er alle Übereinstimmungen findet.
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Beitrag von gnasen »

Der gibt dir ja bei FindString() die Stelle zurück, an der er den String findet. Der letzte Parameter war glaube ich die Stelle, an der er anfangen soll. Also mal quick'n'dirty

Code: Alles auswählen

stelle = 0

repeat
  
  find = FindString(Code$, "http://download", stelle)

  if find
    debug find
    stelle = find + len("http://download")
  else
    break
  endif

forever
ist ungetestet, sollte aber funktionieren. find und stelle habe ich jetzt besser erstmal seperat aufgeführt (sollte leichter sein zu verstehen).
Marc-21
Beiträge: 39
Registriert: 11.02.2008 19:37

Beitrag von Marc-21 »

danke

klappt, es wird angezeigt wo er es gefunden hat aber nicht den text mal schauen !
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Marc-21 hat geschrieben:aber nicht den text
dafür verwendest Du dann Left(), Mid() und Right().

Grüße ... Kiffi
a²+b²=mc²
Marc-21
Beiträge: 39
Registriert: 11.02.2008 19:37

Beitrag von Marc-21 »

So weit habe ich es durch eure hilfe danke.
ER findet jetzt alle aber erhört nicht auf der letzte srting kommt immer wieder.
Könnt mir noch mal helfen verstehe das nicht im orginal geht es

Code: Alles auswählen

FF=ReadFile(#PB_Any, "C:\test2.txt") 
If FF 
  Code$ = Space(Lof(FF)) 
  ReadData(FF, @Code$, Len(Code$)) 
  CloseFile(FF) 
EndIf
stelle = 0 

Repeat 
  
  

Code$  = Right(Code$, Len(Code$)-FindString(Code$, "http://download", stelle)+1) 

 
  If Code$
    Debug Code$
   Delay(700)
  stelle = find + Len("http://download")
  Else 
    Break 
  EndIf 

ForEver
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Beitrag von gnasen »

Marc-21 hat geschrieben:So weit habe ich es durch eure hilfe danke.
ER findet jetzt alle aber erhört nicht auf der letzte srting kommt immer wieder.
Könnt mir noch mal helfen verstehe das nicht im orginal geht es

Code: Alles auswählen

FF=ReadFile(#PB_Any, "C:\test2.txt") 
If FF 
  Code$ = Space(Lof(FF)) 
  ReadData(FF, @Code$, Len(Code$)) 
  CloseFile(FF) 
EndIf
stelle = 0 

Repeat 
  
  

Code$  = Right(Code$, Len(Code$)-FindString(Code$, "http://download", stelle)+1) 

 
  If Code$
    Debug Code$
   Delay(700)
  stelle = find + Len("http://download")
  Else 
    Break 
  EndIf 

ForEver
ich vermute mal, dass code$ immer einen wert zurückgibt
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Code: Alles auswählen

Repeat
  
  P1 = FindString(Code$, "http://download", P2)
  
  If P1
    
    P1 + Len("http://download")
    
    P2 = FindString(Code$, " STYLE=", P1)
    
    If P2 
      
      Debug Mid(Code$, P1, P2-P1)
      
    Else
      
      Break
      
    EndIf
   
  Else
    
    Break
    
  EndIf
  
ForEver
und bitte tu mir den Gefallen und finde mal heraus, wie dieser Code
genau funktioniert. Wenn Du den einen oder anderen Befehl nicht kennst,
dann stell den Cursor darauf und drücke <F1>. Dort findest Du weitere
Infos.

Grüße ... Kiffi
a²+b²=mc²
Antworten