txt datei ausgeben

Anfängerfragen zum Programmieren mit PureBasic.
JanWellem
Beiträge: 6
Registriert: 14.01.2009 13:09

txt datei ausgeben

Beitrag 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?
PB 4.20 Demo
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag 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$)
(\/) (°,,,°) (\/)
JanWellem
Beiträge: 6
Registriert: 14.01.2009 13:09

Beitrag 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.
PB 4.20 Demo
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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....
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag 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.
Win11 x64 | PB 6.20
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

oh ja closefile hatte ich vergessen.
so nehme ich eigentlich immer OpenFile, aber für Anfänger ist es wirklich
verwirrend.
Win11 x64 | PB 6.20
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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: )
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten