Problem mit Openfile()

Anfängerfragen zum Programmieren mit PureBasic.
eiban
Beiträge: 33
Registriert: 07.12.2005 15:30
Wohnort: Irlach

Problem mit Openfile()

Beitrag von eiban »

Hallo PBUser

Ich hab ein Problem mit folgendem Code:

Code: Alles auswählen

(...)
StringGadget (1, 20, 10, 600, 300, "<>",#PB_String_Multiline)
(...)

StandardFile$ = "C:\Programme\1.smm"
        Pattern$ = "S-Managerdaten (*.smm)|*.smm;*.s5m|Texte (*.txt)|*.txt;*.rtf"
       Pattern = 0
       File$ = OpenFileRequester("Bitte Datei zum Öffnen angeben", StandardFile$, Pattern$, Pattern)
       If File$ 
       If OpenFile(0, ""+File$+"")
                     
       AP$ =    ReadString()
       SetGadgetText((1), ""+AP$+"")
       Else
       MessageRequester("OPEN","Fehler",0)
                     
       Else
       MessageRequester("Information", "Kann Datei nicht Öffnen!", 0)
       End
       EndIf
 
       Else 
       MessageRequester("Information", "Der Requester wurde abgebrochen.", 0) 
       EndIf 
Und zwar will ich einen Text mit mehreren Zeilen öffnen und dann den Text in das Gadget einfügen. Doch jetzt zeigt mir dann das Stringgadget nur die 1. Zeile des Textes an.

Muss ich hier einen anderen Befehl anwenden statt AP$ = ReadString()?

Bitte euere Befehle für PureBasic (3.30)


Schon mal Danke für alle Schreiber!
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

ReadString() liest nur eine zeile, also bis EOL (end of line).
und das kannste dann wiederholen bis EOF (end of file)
my pb stuff..
Bild..jedenfalls war das mal so.
eiban
Beiträge: 33
Registriert: 07.12.2005 15:30
Wohnort: Irlach

Beitrag von eiban »

Du meinst also

Code: Alles auswählen

Zeile1$ = ReadString()
Zeile2$ = ReadString()
[...]
Benutzeravatar
Karl
Beiträge: 520
Registriert: 21.07.2005 13:57
Wohnort: zu Hause

Beitrag von Karl »

Wenn man eine komplette Datei einlesen will, geht es auch so:

Code: Alles auswählen

If OpenWindow(0, 0, 0, 600, 400, #PB_Window_SystemMenu, "Test")
  If CreateGadgetList(WindowID(0))
    EditorGadget(0, 10, 10, 580, 360)
    ReadFile(0, "i:\word\be-anschreiben.rtf")
    lang.l = Lof()
    *MemId = AllocateMemory(lang)
    ReadData(*MemId, lang)
    CloseFile(0)
    SetGadgetText(0, PeekS(*MemId))
    Repeat
      
    Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
EndIf
Die angegebene Datei musst du natürlich ändern. Außerdem verwende ich ein Editorgadget, um rtf-Dokumente darzustellen.

Gruß Karl
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

So - hab für deinen Code mal ein Window erzeugt und das ganze für PB 3.94 angepasst (was älteres hab ich leider nicht)...

Code: Alles auswählen

OpenWindow(0,0,0,600,300,#PB_Window_SystemMenu,"Test")
CreateGadgetList(WindowID(0))
StringGadget (1, 0, 0, 600, 300, "<>",#PB_String_MultiLine) 

StandardFile$ = "C:\lala.smm" 
Pattern$ = "S-Managerdaten (*.smm)|*.smm;*.s5m|Texte (*.txt)|*.txt;*.rtf" 
Pattern = 0 
File$ = OpenFileRequester("Bitte Datei zum Öffnen angeben", StandardFile$, Pattern$, Pattern) 
If File$ 
  If ReadFile(0, File$) 
    While Eof(0) = 0
      SetGadgetText(1,GetGadgetText(1)+Chr(13)+Chr(10)+ReadString())
    Wend
  Else 
    MessageRequester("OPEN","Fehler beim Öffnen",0) 
  EndIf
Else 
  MessageRequester("Information", "Requester abgebrochen!", 0) 
EndIf 

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
eiban
Beiträge: 33
Registriert: 07.12.2005 15:30
Wohnort: Irlach

Beitrag von eiban »

Danke Real
Hat gepfunzt. :allright:
Antworten