Seite 1 von 3

WriteFile - ReadFile

Verfasst: 05.12.2014 14:34
von stevie1401
leider verstehe ich die sehr ungewöhnliche PB-Syntax überhaupt nicht.

Kann mir das mal jemand in PB übersetzen?

Code: Alles auswählen

 If Exist(file)
      ff = FreeFile
      Open file for Input As # ff
      While Not EOF(# ff)
        Line Input # ff, aString
       Wend
      Close # ff
    EndIf


Auch das Schreiben in eine Datei bekomme ich nicht hin.

Kann mir jemand folgendes übersetzen?

Code: Alles auswählen

 
      ff = FreeFile
      Open file for Output As # ff
      Print # ff, aString
      Close # ff
 



Re: WriteFile - ReadFile

Verfasst: 05.12.2014 14:55
von RehW
Siehe Dir zum Lesen das Beispiel in der Hilfedatei an. Ein Beispiel zum schreiben findest Du auch in der Hilfedatei unter OpenFile.
Wenn das nicht reicht einfach melden.

Gruss RehW

Re: WriteFile - ReadFile

Verfasst: 05.12.2014 16:39
von ts-soft

Code: Alles auswählen

EnableExplicit

Define ff, file.s, text.s, format

If FileSize(file) >= 0
  ff = ReadFile(#PB_Any, file) ; zum lesen, zum lesen und schreiben bitte OpenFile(...)
  If ff
    format = ReadStringFormat(ff)
    While Not Eof(ff)
      text + ReadString(ff, format)
    Wend
    CloseFile(ff)
  EndIf
EndIf

; ---------------------------------------
ff = OpenFile(#PB_Any, file)
If ff
  WriteStringFormat(ff, format)
  
  WriteString(ff, text, format)
  ; ....
  
  CloseFile(ff)
EndIf

Anpassungen bitte selber machen.

Gruß
Thomas

Re: WriteFile - ReadFile

Verfasst: 05.12.2014 17:02
von Kiffi
@stevie1401:

Zusatzinfo:

'Open file for Output ...' entspricht einem CreateFile()

OpenFile() wäre 'Open file for Append ...'

Grüße ... Peter

Re: WriteFile - ReadFile

Verfasst: 14.12.2014 19:32
von stevie1401
Vielen Dank.
Leider verstehe ich das Read-Write überhaupt nicht. Ich kann es schlicht nicht nachvollziehen und erkenne leider keine Logik dahinter.


Kann mit bitte jemand das hier in PB übersetzen? Ich bekomme es wirklich nicht hin:

Code: Alles auswählen

ff=freefile
 Open file for Binary As # ff
  Print # ff, aString
  Close # ff
  

Re: WriteFile - ReadFile

Verfasst: 14.12.2014 20:02
von es_91
stevie1401 hat geschrieben:Kann mit bitte jemand das hier in PB übersetzen? Ich bekomme es wirklich nicht hin:

Code: Alles auswählen

ff=freefile
 Open file for Binary As # ff
  Print # ff, aString
  Close # ff
  

Code: Alles auswählen

; um Kompatibilität mit EnableExplicit zu erhalten:
Define aString$
Define file$
Define ff
; /

ff = OpenFile (#PB_Any, file$)

WriteStringN (ff, aString$)

CloseFile (ff)
Ich meine, mich zu erinnern, dass freefile die niedrigste mögliche Nummer zurückgibt. In PureBasic müsstest Du alle Nummern ab #Null abfragen (mit IsFile ()), um wirklich die niedrigste zu finden. #PB_Any bei OpenFile () gibt eine Speicheradresse zurück, die liegt irgendwo.

Re: WriteFile - ReadFile

Verfasst: 14.12.2014 20:04
von Kiffi

Code: Alles auswählen

EnableExplicit

Define FF

FF = CreateFile(#PB_Any, "DeineDatei.txt")

If FF
	WriteString(FF, "Hello World")
	CloseFile(FF)
Else
	Debug "'DeineDatei.txt' konnte nicht erstellt werden"
EndIf

Re: WriteFile - ReadFile

Verfasst: 14.12.2014 20:27
von stevie1401
Sodele, einer schreibt WriteString, der andere WriteStringN, ich habe BEIDES getestet, aber die Daten werden allerdings NICHT sauber geschrieben.
Zur Erklärung.
Ich bekomme vom Server einen String, den ich als binary abspeichern muss.
Unter GFA-Basic habe ich obigen Code genommen, der problemlos funktioniert.
Mit PB wird der String NICHT sauber geschrieben, d.h. an bestimmten Stellen macht er ein Chr(13) oder chr(10) wo es NICHT hingehört und trennt so Zeilen.
Getestet unter Linux und Windows.

Gibt es keine echte Übersetzung für
"Open file for Binary As # ff ?

Re: WriteFile - ReadFile

Verfasst: 14.12.2014 20:40
von Kiffi
Mit PB wird der String NICHT sauber geschrieben
ist es denn wirklich zu viel verlangt, mal ab und zu in die Hilfe zu schauen?

WriteString() vs. WriteStringN()

Re: WriteFile - ReadFile

Verfasst: 14.12.2014 20:42
von stevie1401
Habe ich doch getan.
Nur funktioniert beides nicht.
Deshalb meine Frage noch einmal:
Gibt es eine Möglichkeit Daten als Binary zu schreiben?