Hallo Skayy,
sieh Dir die Funktionen SetGadgetText und GetGadgetText in Verbindung mit EditorGadget an.
Code: Alles auswählen
; MiniEdi ist ein einfaches Programm zur Veränderung von Texten im UTF-8-Format,
; Das Textformat ist unter https://de.wikipedia.org/wiki/UTF-8 beschrieben.
; Auswählen einer Datei:
Pattern$ = "Text (*.txt)|*.txt;*.bat|PureBasic (*.pb)|*.pb|Alle Dateien (*.*)|*.*"
; Speichere einen Filter für die Dateiauswahl im String Pattern$.
File$ = OpenFileRequester("Bitte Datei zum Laden auswählen", "myText.txt", Pattern$,0)
; Rufe die Dateiauswahl mit einer Überschrift, einer Standartdatei, einem Filter und der
; Filterposition auf und speichere das Ergebnis im String File$.
If File$="" ; Sollte das Ergebnis der Dateiauswahl leer sein,
File$="myText.txt" ; setze den String File$ auf den Dateinamen myText.txt.
EndIf
If OpenWindow(0, 0, 0, 1024, 768, File$, #PB_Window_SystemMenu)
; Öffne das Fenster 0 an der Position 0,0 mit der Größe 1024 mal 768, der Überschrift File$
; mit Menü in der Titelzeile des Fensters ein.
; Wenn das Fenster geöffnet werden kann, führe die weiteren Befehle aus.
EditorGadget(0, 8, 8, 1000, 750)
; Erstelle einen leeren Editor mit der Gadgetnummer 0, an der Position 8,8 in der
; Größe 1000 mal 750.
If ReadFile(0, File$,#PB_UTF8)
; Versuche die Datei 0 mit dem Namen File$ im Format UTF8 zum Lesen zu öffnen.
; Wenn dies gelungen ist, führe die Befehle bis Endif aus.
Laenge=Lof(0)
; Stelle die Länge der Datei in Bytes fest und speichere Sie in der Variablen Laenge.
; Die Länge kann von der Anzahl der Zeichen abweichen.
*Puffer=AllocateMemory(Laenge)
; Besorge einen Speicherblock in der Länge Laenge und
; speichere die Adresse des Speicherblocks unter *Puffer.
ReadData(0,*Puffer,Laenge)
; Lese alles was in der Datei 0 steht in den Speicherblock *Puffer ein.
; Es müßten Laenge Bytes geleesen werden. Dies wird hier aber nicht extra abgefragt.
; Die Daten stehen jetzt im UTF8-Format bereit.
SetGadgetText(0, PeekS(*Puffer,-1,#PB_UTF8))
; Wandele den Inhalt des Speicherblocks *Puffer in Unicode-String Format und setzte
; diesen String als Text vom Gadget 0.
CloseFile(0) ; Schließe die Datei 0.
FreeMemory(*Puffer) ; Gebe den Speicher *Puffer frei,
EndIf ; ReadFile
; Hauptschleife
Repeat ; wiederhole
Until WaitWindowEvent() = #PB_Event_CloseWindow ; Warte auf ein "Fenster-Ereignis".
; Verarbeite alle Eingaben und verändere den "Text"-Inhalt des EditorGadgets.
; Verlasse die Hauptschleife, wenn das Ereignis Fenster schliessen ausgelöst wird.(ALT-F4)
If OpenFile(0,File$,#PB_UTF8)
; Versuche die Datei 0 mit dem Namen File$ im Format UTF8 zum Schreibem zu öffnen.
WriteString(0,GetGadgetText(0),#PB_UTF8)
; Wandelte den Textinhalt des Gadgets im der Nummer 0 in das Format UTF8 um und
; schreibe es in die Datei 0.
; Das fehlerhafte Schreiben auf die Datei wird nicht abgefragt.
CloseFile(0) ; Schließe die Datei 0.
EndIf ; OpenFile
EndIf ; OpenWindow
Gegen mein Code "chinesisch" hilft Dir leider nur ausführliches kommentieren jeder Programmzeile und jedes Funktions-Parameters.
Gruß
Jürgen Kulow
Änderung: Kommentare im Programm ergänzt.