Inhalt vom EditorGadget mit 1 x WriteData speichern?
Inhalt vom EditorGadget mit 1 x WriteData speichern?
Weiß jemand, wie ich an die Memoryadresse komme, an der der Text eines EditorGadgets gespeichert ist?
Ich vermute, daß es eine Struktur ist (die dann auch die Größe des Speichers enthält)
Ich würde den Text gern mit WriteData() in einem Rutsch speichern, statt jede Zeile einzeln in einem Loop wegzuschreiben.
Markus
Ich vermute, daß es eine Struktur ist (die dann auch die Größe des Speichers enthält)
Ich würde den Text gern mit WriteData() in einem Rutsch speichern, statt jede Zeile einzeln in einem Loop wegzuschreiben.
Markus
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
- 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
Code: Alles auswählen
Procedure StreamFileOut_Callback(hFile, pbBuff, cb, pcb)
ProcedureReturn WriteFile_(hFile, pbBuff, cb, pcb, 0)!1
EndProcedure
Procedure Editor_Save(Gadget, File.s)
Protected FileID.l, result.l
Protected StreamData.EDITSTREAM
FileID = CreateFile(#PB_Any, File)
If FileID
StreamData\dwCookie = FileID(FileID)
StreamData\dwError = #Null
StreamData\pfnCallback = @StreamFileOut_Callback()
If UCase(GetExtensionPart(File)) = "RTF"
result = SendMessage_(GadgetID(Gadget), #EM_STREAMOUT, #SF_RTF, @StreamData)
Else
result = SendMessage_(GadgetID(Gadget), #EM_STREAMOUT, #SF_TEXT, @StreamData)
EndIf
CloseFile(FileID)
EndIf
ProcedureReturn result
EndProcedure
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Inhalt vom EditorGadget mit 1 x WriteData speichern?
Das geht nur mit dem Stringgadget und #EM_GETHANDLE.Kurzer hat geschrieben:Weiß jemand, wie ich an die Memoryadresse komme, an der der Text eines EditorGadgets gespeichert ist?
Ich vermute, daß es eine Struktur ist (die dann auch die Größe des Speichers enthält)
Ich würde den Text gern mit WriteData() in einem Rutsch speichern, statt jede Zeile einzeln in einem Loop wegzuschreiben.
Markus
Fuer das EditorGadget hat ts ja schon etwas gepostet.
@ts-soft: Vielen Dank.
Aber... uff, ich benutze es erstmal "as is" und versuche es später genau zu verstehen (wenn ein paar weitere PB-skill-Striche in meinem footer zu sehen sind).
Wo kriegt man solche infos her... z.B. über die EDITSTREAM Struktur, bzw. erstmal das Wissen, daß man den Editor-Inhalt als Stream wegschreiben kann?
Ich vermute, Du bist schon länger unter Windows als coder unterwegs und vermutlich nicht nur in PB.
Naja, da merkt man doch, daß ich auf der DOSE noch nie so richtig programmiert habe (bin Alt-Amiganer mit ca. 14 Jahren codingpause)
Aber... uff, ich benutze es erstmal "as is" und versuche es später genau zu verstehen (wenn ein paar weitere PB-skill-Striche in meinem footer zu sehen sind).
Wo kriegt man solche infos her... z.B. über die EDITSTREAM Struktur, bzw. erstmal das Wissen, daß man den Editor-Inhalt als Stream wegschreiben kann?
Ich vermute, Du bist schon länger unter Windows als coder unterwegs und vermutlich nicht nur in PB.
Naja, da merkt man doch, daß ich auf der DOSE noch nie so richtig programmiert habe (bin Alt-Amiganer mit ca. 14 Jahren codingpause)
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
- Elektrolurch
- Beiträge: 168
- Registriert: 11.10.2007 16:48
- Wohnort: 49°26'51.46"N - 8°59'49.06"E
- Kontaktdaten:
Re: Inhalt vom EditorGadget mit 1 x WriteData speichern?
Hallo
ich habe gestern mal den Beispielcode von ts-soft ausprobiert.
Nun habe ich einmal eine generelle Frage dazu.
Ich lade in meinem Programm eine XML Datei im Unix Format in das Editorgaget,
wenn ich es nun mit obigem Code wieder speichere hat es das Windows Format.
Außerdem hat sich die größe der Datei geändert, obwohl beide Dateien im Editor noch gleich aussehen.
Nun meine Fragen, hat das Auswirkungen auf die Funktion?
Gibt es eine Möglichkeiten das Editorgadget in die Datei zu speichern ohne, dass sich das Format ändert?
Danke schon einmal im voraus.
BYe André
ich habe gestern mal den Beispielcode von ts-soft ausprobiert.
Nun habe ich einmal eine generelle Frage dazu.
Ich lade in meinem Programm eine XML Datei im Unix Format in das Editorgaget,
wenn ich es nun mit obigem Code wieder speichere hat es das Windows Format.
Außerdem hat sich die größe der Datei geändert, obwohl beide Dateien im Editor noch gleich aussehen.
Nun meine Fragen, hat das Auswirkungen auf die Funktion?
Gibt es eine Möglichkeiten das Editorgadget in die Datei zu speichern ohne, dass sich das Format ändert?
Danke schon einmal im voraus.
BYe André
Wer Rechtschreibfehler findet darf sie ruhig behalten, ich brauche sie nicht mehr, ich habe noch genug davon.






-
- Beiträge: 120
- Registriert: 01.04.2011 21:59
Re: Inhalt vom EditorGadget mit 1 x WriteData speichern?
Wenn ich mich richtig erinnere verwendet Unix nur <LF>, wo Windows <CR><LF> verwendet.Elektrolurch hat geschrieben:Hallo
...
Nun meine Fragen, hat das Auswirkungen auf die Funktion?
Gibt es eine Möglichkeiten das Editorgadget in die Datei zu speichern ohne, dass sich das Format ändert?
...
Ich habe mal den Editorinhalt mit GetGadgetText() "am Stück" in eine Datei gespeichert. Vorher habe ich die <CR> mit RemoveString() entfernt. Zwar habe ich keine Unix-Datei, aber meine DOS-Datei ist genau so aus dem Editor gekommen, wie ich es erwartet habe.
Ist leicht umzusetzen und vielleicht einen Versuch wert.

- 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
Re: Inhalt vom EditorGadget mit 1 x WriteData speichern?
Im ScintillaGadget kannst Du das Zeilenumbruchformat einstellen. Ein Windows Control wird per Default
immer #CRLF$ verwenden.
immer #CRLF$ verwenden.
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- Elektrolurch
- Beiträge: 168
- Registriert: 11.10.2007 16:48
- Wohnort: 49°26'51.46"N - 8°59'49.06"E
- Kontaktdaten:
Re: Inhalt vom EditorGadget mit 1 x WriteData speichern?
Hallo fabulouspaul & ts-soft.
sorry ich war krank, daher meine späte Antwort.
Ich komme erst am Wochenende wieder dazu weiter zu basteln.
@ts-soft
das scintillagadget kannte ich bislang noch nicht.
Kannst du mir zeigen wo man das einstellt, bei einem ersten Blick in die Hilfe fand ich nichts.
@fabulouspaul
Ich werde es noch mal versuchen.
Ich hatte aber zuerst auch so einen Versuch gestartet, wenn ich mich recht erinnere war das File aber da auch zu lange.
Möglicherweise habe ich zu schnell aufgegeben und einen eigenen Fehler übersehen.
@all
Allerdings habe ich festgestellt die Anwendung verarbeitet das XMLFile auch trotz der zusätzliche <CR>
Momentan geht es mir also lediglich ums Prinzip.
Danke André
sorry ich war krank, daher meine späte Antwort.
Ich komme erst am Wochenende wieder dazu weiter zu basteln.
@ts-soft
das scintillagadget kannte ich bislang noch nicht.
Kannst du mir zeigen wo man das einstellt, bei einem ersten Blick in die Hilfe fand ich nichts.

@fabulouspaul
Ich werde es noch mal versuchen.
Ich hatte aber zuerst auch so einen Versuch gestartet, wenn ich mich recht erinnere war das File aber da auch zu lange.
Möglicherweise habe ich zu schnell aufgegeben und einen eigenen Fehler übersehen.
@all
Allerdings habe ich festgestellt die Anwendung verarbeitet das XMLFile auch trotz der zusätzliche <CR>
Momentan geht es mir also lediglich ums Prinzip.
Danke André
Wer Rechtschreibfehler findet darf sie ruhig behalten, ich brauche sie nicht mehr, ich habe noch genug davon.






- 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
Re: Inhalt vom EditorGadget mit 1 x WriteData speichern?
Hilfe zum ScintillaGadget: http://www.scintilla.org/ScintillaDoc.html
Hilfe zum setzen des EOL (EndOfLine) Modes: http://www.scintilla.org/ScintillaDoc.h ... SETEOLMODE
Ungetestet, aber sollte dann so funktionieren:
Gruß
Thomas
Hilfe zum setzen des EOL (EndOfLine) Modes: http://www.scintilla.org/ScintillaDoc.h ... SETEOLMODE
Ungetestet, aber sollte dann so funktionieren:
Code: Alles auswählen
ScintillaSendMessage(#Gadget, #SCI_SETEOLMODE, #SC_EOL_LF)
Thomas
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
