Seite 1 von 2

Text aus Datei in TextGadget einladen

Verfasst: 29.09.2005 18:54
von satzzeichen
Hallo,

ich habe in meiner Applikation ein EditorGadget und würde es gerne handhaben, dass der Benutzer etwas reinschreiben kann und der Text beim beenden gespeichert wird.

Jetzt bereitet mir nicht das Speichern ein Problem, sondern das Laden!
Habe schon mehreres probiert z.B.

Code: Alles auswählen

OpenFile(0, "notiz.txt") 
notiz$ = ReadString()
SetGadgetText(9, notiz$) 
CloseFile(0)
aber er liest immer nur eine Zeile in das Gadget ein :( wäre sehr froh, wenn ihr mir helfen könntet!

MfG Satzzeichen

bitte!

Verfasst: 29.09.2005 19:06
von FISCHAUGE

Code: Alles auswählen

ReadString()+Chr(13)+Chr(10)
somit liest er Enter und space auch mit!

Verfasst: 29.09.2005 19:09
von Eric
Du musst die Datei Zeile für Zeile auslesen.

Code: Alles auswählen

Repeat
  text$=ReadString()
Until Eof(0)<>0
Und möglicherweise noch den Zeilenumbruch hinzufügen (chr(13)+chr(10))

Re: Text aus Datei in TextGadget einladen

Verfasst: 29.09.2005 19:13
von Kiffi

Code: Alles auswählen

; Datei zum Lesen öffnen

FF = ReadFile(#PB_Any, "notiz.txt") 

If FF ; Öffnen hat geklappt?
  
  While Eof()=0 ; Datei bis zu Ende lesen
    
    ; Jede Zeile wird zur Variable notiz$ hinzugefügt
    
    notiz$ + ReadString() + #CRLF$ 
    
  Wend
  
  ; Datei schliessen
  
  CloseFile(FF)
  
  ; Variableinhalt in Gadget einfügen
  
  SetGadgetText(9, notiz$) 
  
Else
  
  MessageRequester("", "Die Datei konnte nicht geladen werden.")
  
EndIf

Ich hoffe, dass sich der Code von selber erklärt.

Grüße ... Kiffi

Verfasst: 29.09.2005 19:18
von satzzeichen
Daaaaanke Kiffi :)

Re: bitte!

Verfasst: 29.09.2005 19:21
von Kiffi
FISCHAUGE hat geschrieben:

Code: Alles auswählen

ReadString()+Chr(13)+Chr(10)
somit liest er Enter und space auch mit!
richtiger Ansatz, falsche Erklärung ;-)

Code: Alles auswählen

Irgendwas$ = ReadString()+Chr(13)+Chr(10)
sorgt dafür, dass die Stringvariable '[c]Irgendwas[/c]' mit der
nächstausgelesenen Zeile der aktuell geöffneten Datei gefüllt wird. Zusätzlich
wird ein Zeilenumbruch mit [c]Chr(13)+Chr(10)[/c] hinzugefügt.

[c]Chr(13)+Chr(10)[/c] kann man auch ein wenig kürzer mit #CRLF$
schreiben.

Mit Space [c]Chr(32)[/c] hat das ganze nichts zu tun. Auch wird mit dieser einen
Anweisung nicht der gesamte Inhalt aus der Datei ausgelesen, so wie es
satzzeichen haben wollte

@Eric:

Code: Alles auswählen

Repeat
  text$=ReadString()
Until Eof(0)<>0 
Hierbei wir text$ immer mit der zuletzt eingelesenen Zeile überschrieben. Du wolltest sicherlich folgendes schreiben:

Code: Alles auswählen

Repeat
  text$+ReadString()
Until Eof(0)<>0 
Grüße ... Kiffi

Verfasst: 29.09.2005 19:32
von PAMKKKKK
:shock: Mann Kiffi, hast du heute deine Pillen gegen das Helfersyndrom noch nicht genommen? :lol:

Kiffi :allright:

Verfasst: 29.09.2005 19:35
von MVXA
Wobei ich diese Methode zum Auslesen bevorzugen würde:

Code: Alles auswählen

while Eof(0) <> 0
    Text$ + ReadString()
Wend

Verfasst: 29.09.2005 19:44
von ts-soft
Ich bevorzuge diese:

Code: Alles auswählen

Procedure StreamFileIn_Callback(hFile, pbBuff, cb, pcb)
  ProcedureReturn ReadFile_(hFile, pbBuff, cb, pcb, 0)!1
EndProcedure
Procedure Editor_LoadText(Gadget, FileID, File.s)
  Protected File
  Protected FileID
  Protected Gadget
  Protected StreamData.EDITSTREAM
  If ReadFile(FileID, File)
    StreamData\dwCookie = UseFile(FileID)
    StreamData\dwError = #Null
    StreamData\pfnCallback = @StreamFileIn_Callback()
    SendMessage_(GadgetID(Gadget), #EM_STREAMIN, #SF_TEXT, @StreamData)
    CloseFile(FileID)
  EndIf
EndProcedure
Aber für Anfänger vielleicht nicht ganz das richtige :freak:

Verfasst: 29.09.2005 19:46
von MVXA
Jo, das ist die bekannte Spatzenkanone :freak:...