Seite 1 von 2

HTML-Editor

Verfasst: 06.05.2007 00:29
von Dark Skillu
Hab hier nen sehr einfache HTML-Editor, klappt soweit auch alles, der erstellt ne HTML Datei mit allen befehlen die ich im editor gadget definiert hab etc. das Problem ist ich kann nur die Datei öffnen die ich im Programm definiert und in eine vordefinierte datei speichern, wie schaffe ich sowas wie beim windows editor mit Datei öffnen/speichern etc. ?

Hier der Code:

Code: Alles auswählen

;coded by Sebastian
;Vielen Dank an die Mitglieder des PureBoards für ihre Hilfe

;strings
Hallo$ = " Hallo"
Halllo$ = " Hallloo"



If OpenWindow(0, 45, 100, 570, 300, "HTML-Editor by Sebastian ", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget) And CreateGadgetList(WindowID(0))
  
        EditorGadget(1, 30,  90, 510, 180 )
        ButtonGadget(2, 30,  45, 60, 30, "1")
        ButtonGadget(3, 105, 45, 60, 30, "2")
        ButtonGadget(4, 180, 45, 60, 30, "3")
        ButtonGadget(5, 255, 45, 60, 30, "4")
        ButtonGadget(6, 330, 45, 60, 30, "5")
        ButtonGadget(7, 405, 45, 60, 30, "Öffnen")
        ButtonGadget(8, 480, 45, 60, 30, "Speichern")
        
EndIf

Repeat

Event = WindowEvent()
  WindowID = EventWindow()
  GadgetID = EventGadget()
  EventType = EventType()

  If Event = #PB_Event_CloseWindow
   a=1
  EndIf
  
  If Event = #PB_Event_Gadget 
   If GadgetID = 2 
        String$ = GetGadgetText(1)
     SetGadgetText(1, String$+Hallo$) 
   EndIf
  EndIf
  
  If Event = #PB_Event_Gadget 
   If GadgetID = 3 
     String$ = GetGadgetText(1)
     SetGadgetText(1, String$+Halllo$) 
   EndIf
  EndIf
  
  If Event = #PB_Event_Gadget 
   If GadgetID = 7 
     speichern$ = GetGadgetText(1)
      OpenFile(0,"text.html")
      oeffnen$=ReadString(0)
      SetGadgetText(1, oeffnen$) 
      CloseFile(0)
      
      
   EndIf
  EndIf
  
  If Event = #PB_Event_Gadget 
   If GadgetID = 8 
     speichern$ = GetGadgetText(1)
      CreateFile(0,"text.html")
       WriteString(0, speichern$ )
      CloseFile(0)
   EndIf
  EndIf
  
  

Until a = 1

Verfasst: 06.05.2007 00:52
von D@nte
OpenFileRequester()
SaveFileRequester()

Hilfe und Examples sind deine Freunde und durch aus sinnvoll...
Besonders für deine Syntax sollteste ma die Examples studieren die ist gruselig...

Verfasst: 06.05.2007 01:01
von ts-soft
Beispiel für Speichern:

Code: Alles auswählen

  If Event = #PB_Event_Gadget
    If GadgetID = 8
      speichern$ = GetGadgetText(1)
      ;CreateFile(0,"text.html")
      File$ = SaveFileRequester("HTML-Speichern", "text.html", "HTML (*.html)|*.html;|Alle Dateien (*.*)|*.*", 0)
      If File$ <> "" ; nicht abgebrochen
        If CreateFile(0, File$); immer überprüfen!!!! wichtig
          WriteString(0, speichern$ )
          CloseFile(0)
        EndIf
      EndIf


    EndIf
  EndIf



Until a = 1
Du solltest Variablen deklarieren, konstanten mit aussagekräftigen Namen
für Gadgets usw. So machste Dir das Leben schwer, weil schon bei so wenig
Zeilen kann man den Überblick verlieren! Wie soll das bei tausenden von
Zeilen werden?

Nur so als Tip

Gruß
Thomas

Verfasst: 06.05.2007 08:07
von Dark Skillu
Danke, den Befehl zum öffnen hab noch ich in der Hilfe gefunden aber wenn ich eine HTML-Datei öffne wird nicht der ganze Inhalt ausgelesen sondern nur der erste Befehl.Laut Hilfe liest ein String alle Zeichen aus bis ein "Ende der Zeile " Zeichen gefunden wird, wie kann ich den ganzen Inhalt auslesen?

Code: Alles auswählen

;Fenster Öffnen Gadgets etc.

If OpenWindow(0, 143, 223, 611, 316, "HTML-Editor",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) And CreateMenu(s, WindowID(0))
      MenuTitle("Datei")
      MenuItem(1, "Öffnen")
      MenuItem(2, "Speichern")
      MenuTitle("Bearbeiten")
      MenuTitle("Einfügen")
      MenuTitle("Settings")
EndIf

If CreateGadgetList(WindowID(0))
      EditorGadget(3, 30, 60, 555, 210)
      ButtonGadget(4, 45, 15, 90, 30, "")
      ButtonGadget(5, 150, 15, 90, 30, "")
      ButtonGadget(6, 255, 15, 90, 30, "")
      ButtonGadget(7, 360, 15, 90, 30, "")
      ButtonGadget(8, 465, 15, 90, 30, "")
EndIf
  
;strings  

Repeat

  Event = WaitWindowEvent()

  If Event = #PB_Event_CloseWindow
    quit=1
  EndIf  

        
      Select Event
       Case #PB_Event_Menu             
          Select EventGadget()
             
             Case 2
               save$ = GetGadgetText(3)
                File$ = SaveFileRequester("HTML-Speichern", "index.html", "HTML (*.html)|*.html;|Alle Dateien (*.*)|*.*", 0)
                 If File$ <> "" ; nicht abgebrochen
                 If CreateFile(0, File$); immer überprüfen!!!! wichtig
                 WriteString(0, save$ )
                CloseFile(0)
                EndIf
                EndIf
                
              Case 1
               
                File$ = OpenFileRequester("HTML Datei Öffnen", "index.html", "HTML (*.html)|*.html;|Alle Dateien (*.*)|*.*", 0)
                 If File$ <> "" ; nicht abgebrochen
                  If OpenFile(0, File$); immer überprüfen!!!! wichtig
                      open$=ReadString(0)
                     CloseFile(0)
                  EndIf
                EndIf
                SetGadgetText(3, open$) 
                
          EndSelect
        EndSelect


Until quit=1

 


Verfasst: 06.05.2007 12:40
von Bax
Mit Loc(#File) kriegst du die aktuelle Cursorposition in der Datei, mit Lof(#File) die gesamte Länge der Datei.

Wenn der Lese-/Schreibcursor noch nicht am Ende der Datei angekommen ist (Loc(#File) = Lof(#File)), gibt es noch was auszulesen.

In deinem Beispiel könntest du es so machen:

Code: Alles auswählen

Repeat 
  AddGadgetItem(3, -1, ReadString(0))  ; eine Zeile zum Editorgadget hinzufügen (-1: unten anfügen)
Until Loc(0) = Lof(0)
Grüße,
Bax

Verfasst: 06.05.2007 13:08
von Dark Skillu
ich meine wenn man aus einer HTML Datei den Inhalt mit ReadString() ausliest wird nicht alles ausgelesen sondern nur der erste html befehl ...

Verfasst: 06.05.2007 13:26
von D@nte
Könnte evtl daran liegen das du nur einen String übergibst?!
Nur schade das du die Codes einfach nur übernimmst ohne dir mal die Hilfe zu den für dich anscheinend neuen Befehlen durchzulesen...
Dann wärst du nämlich spätestens bei OpenFile() auf ReadFile() gestossen und hättest dir damit dein Problem selbst lösen können...

Spoiler:

Code: Alles auswählen

Case 1
  File$ = OpenFileRequester("HTML Datei Öffnen", "index.html", "HTML (*.html)|*.html;|Alle Dateien (*.*)|*.*", 0)
    If File$ = File$
      If ReadFile(0, File$)
        While Eof(0) = 0
        open$ = ReadString(0)
        SetGadgetText(3, GetGadgetText(3) + Chr(10) + open$)
      Wend
      CloseFile(0)
    Else
      MessageRequester("Information","Konnte Datei nicht öffnen!")
    EndIf
[OT]
B> [Spoiler]-Tag 1ea
[/OT]

Verfasst: 06.05.2007 13:42
von DarkDragon
Dark Skillu hat geschrieben:ich meine wenn man aus einer HTML Datei den Inhalt mit ReadString() ausliest wird nicht alles ausgelesen sondern nur der erste html befehl ...
Ja, eben das hat Bax doch erklärt wie du es machen sollst.
Das ganze geht aber auch mit EoF(#Datei) statt Lof und Loc.

Verfasst: 06.05.2007 13:56
von Bax
@Dark Skillu
In deinem Code musst du

Code: Alles auswählen

open$=ReadString(0)
durch

Code: Alles auswählen

Repeat
  AddGadgetItem(3, -1, ReadString(0))  ; eine Zeile zum Editorgadget hinzufügen (-1: unten anfügen)
Until Loc(0) = Lof(0)
ersetzen und

Code: Alles auswählen

SetGadgetText(3, open$)
auskommentieren.

Guck dir auch mal (wie D@nte schon angemerkt hat) den Befehl ReadFile() und das Beispiel dort an!


@D@nte:
Jo, mit EoF() geht auch.
In deinen Code ist aber irgendwie eine Zeile zuviel (If File$ = File$), sonst funktionierts.


Grüße,
Bax

Verfasst: 06.05.2007 19:13
von Dark Skillu
wieso funktioniert das mit openfile nicht und soll readfile verwenden?