Text aus Datei in TextGadget einladen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
satzzeichen
Beiträge: 34
Registriert: 22.05.2005 13:59
Wohnort: Rötha bei Leipzig
Kontaktdaten:

Text aus Datei in TextGadget einladen

Beitrag 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
Der erhabene Geist schafft am meisten, wenn er am wenigsten Arbeitet. Leonardo da Vinci

Ich hätte nie gedacht, dass es soviele Fette gibt. Da kann man ja noch was lernen. G. Schröder
Benutzeravatar
FISCHAUGE
Beiträge: 108
Registriert: 25.03.2005 21:07
Wohnort: Karlsruhe
Kontaktdaten:

bitte!

Beitrag von FISCHAUGE »

Code: Alles auswählen

ReadString()+Chr(13)+Chr(10)
somit liest er Enter und space auch mit!
Na alles Senkrecht?
Benutzeravatar
Eric
Beiträge: 303
Registriert: 05.09.2004 09:50
Wohnort: Göttingen

Beitrag 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))
El_Choni_work: cant't you just spit the binary data to sqlite, as you would spit a hamster into a microwave oven?
* Fangles falls off the chair laughing
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Text aus Datei in TextGadget einladen

Beitrag 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
a²+b²=mc²
Benutzeravatar
satzzeichen
Beiträge: 34
Registriert: 22.05.2005 13:59
Wohnort: Rötha bei Leipzig
Kontaktdaten:

Beitrag von satzzeichen »

Daaaaanke Kiffi :)
Der erhabene Geist schafft am meisten, wenn er am wenigsten Arbeitet. Leonardo da Vinci

Ich hätte nie gedacht, dass es soviele Fette gibt. Da kann man ja noch was lernen. G. Schröder
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: bitte!

Beitrag 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
a²+b²=mc²
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Beitrag von PAMKKKKK »

:shock: Mann Kiffi, hast du heute deine Pillen gegen das Helfersyndrom noch nicht genommen? :lol:

Kiffi :allright:
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Wobei ich diese Methode zum Auslesen bevorzugen würde:

Code: Alles auswählen

while Eof(0) <> 0
    Text$ + ReadString()
Wend
Bild
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 »

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:
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
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Jo, das ist die bekannte Spatzenkanone :freak:...
Bild
Antworten