Seite 1 von 1

Problem mit Openfile()

Verfasst: 07.06.2006 13:26
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!

Verfasst: 07.06.2006 13:42
von #NULL
ReadString() liest nur eine zeile, also bis EOL (end of line).
und das kannste dann wiederholen bis EOF (end of file)

Verfasst: 07.06.2006 13:46
von eiban
Du meinst also

Code: Alles auswählen

Zeile1$ = ReadString()
Zeile2$ = ReadString()
[...]

Verfasst: 07.06.2006 13:52
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

Verfasst: 07.06.2006 13:55
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

Verfasst: 07.06.2006 14:00
von eiban
Danke Real
Hat gepfunzt. :allright: