Seite 1 von 2

txt datei ausgeben

Verfasst: 22.01.2009 14:35
von JanWellem
Hi,
ich probier gerade eine komplette Textdatei in einem Fenster(Textgadget) anzeigen zulassen.
Allerdings funktioniert das nicht. Ich hab die komplette Datei eingelesen (also mit while eof, wie in der PB Hilfe) und wollte sie jetzt mit ReadString() ausgeben.
Aber es wird nichts angezeigt. Hat da jemand einen Tipp für mich?

Verfasst: 22.01.2009 14:37
von ts-soft
Mit ReadString() kann man nichts ausgeben, sondern nur einlesen.
Am besten kann Dir geholfen werden, wenn Du Deinen bisherigen Code
hier postest :wink:

Verfasst: 22.01.2009 14:42
von KeyKon
Mit Readstring ausgeben? Am besten wär du Zeigst den Code mal...
Im Prinzip müsste es so gehen:

Code: Alles auswählen

While Not Eof(fileid)
  text$+ReadString(fileid)+Chr(10)
Wend
SetGadgetText(textgadgetid,text$)

Verfasst: 22.01.2009 14:52
von JanWellem
Also ich hatte es in etwas so:

Code: Alles auswählen

If ReadFile(0, "C:\text.txt")  
    While Eof(0) = 0         
     TextGadget(1, 10,  10, 250, 20, ""+ReadString(0) )
       Wend
    CloseFile(0)               
  Else
    MessageRequester("Information","Konnte Datei nicht öffnen!")
  EndIf
Habs nocheinmal umgeschrieben, entweder es funzt gar nicht oder aber es wird nur eine Zeile ausgegeben (was ReadString ja eigentlich auch machen soll...) aber ich möchte die komplette Datei anzeigen lassen.

Verfasst: 22.01.2009 14:57
von Kaeru Gaman
das problem ist ja, dass du in deiner schleife den Inhalt des Textgadgets immer wieder zurücksetzt,
und nur die zuletzt gelesene Zeile reinschreibst.

mach die schleife mal so wie von KeyKon vorgeschlagen, dann klappts auch mit dem Nachbarn....

Verfasst: 24.01.2009 12:43
von Andesdaf
nochmal a code:

Code: Alles auswählen

  If OpenFile(#file,"C:\Text.txt")
    While Eof(#file) = 0
      stext.s + ReadString(#file) + Chr(10)
    Wend
    SetGadgetText(#textgadget,stext)
  Else
    MessageRequester("Information","Konnte Datei nicht öffnen!")
  EndIf
Du darfst nicht bei jedem Durchlauf ein 'neues' Textgadget erstellen, sondern
das musst du vorher im Window erstellen und dann nur mit SetGadgetText()
den Text setzen. Und das auch nur dann, wenn die Schleife beeendet ist.
In der schleife wird ja schon stext gesetzt.

Verfasst: 24.01.2009 12:52
von Kiffi
Andesdaf hat geschrieben:nochmal a code:

Code: Alles auswählen

  If OpenFile(#file,"C:\Text.txt")
nochmal a Hinweis: Wenn man eine existierende Datei lesend öffnen will,
nimmt man ReadFile() und nicht OpenFile(). OpenFile() erstellt die Datei,
wenn sie noch nicht vorhanden ist und das kann grade für Einsteiger wie
JanWellem sehr verwirrend sein.

(ausserdem fehlt ein CloseFile())

nochmal a code (ohne While-Wend-Schleife):

Code: Alles auswählen

FF = ReadFile(#PB_Any,"C:\Text.txt")
If FF
  FileContent.s = Space(Lof(FF))
  ReadData(FF, @FileContent, Len(FileContent))
  CloseFile(FF)
  SetGadgetText(#textgadget,FileContent)
Else
  MessageRequester("Information","Konnte Datei nicht öffnen!")
EndIf
Grüße ... Kiffi

Verfasst: 24.01.2009 12:59
von Andesdaf
oh ja closefile hatte ich vergessen.
so nehme ich eigentlich immer OpenFile, aber für Anfänger ist es wirklich
verwirrend.

Verfasst: 24.01.2009 13:00
von Kiffi
Andesdaf hat geschrieben:so nehme ich eigentlich immer OpenFile
wieso? Du willst doch nicht in die Datei schreiben, sondern nur aus ihr lesen.

Grüße ... Kiffi

Verfasst: 24.01.2009 13:11
von ts-soft
Andesdaf hat geschrieben:so nehme ich eigentlich immer OpenFile, aber für Anfänger ist es wirklich verwirrend.
So sei verwirrt
(er will doch wohl nicht sagen, er sei kein Anfänger mehr :mrgreen: )