Editorgadget in Datei speichern
Verfasst: 11.03.2009 12:13
Hi all
Ich Versuche gerade eine in einem Editorgadget bearbeitet Datei zu speichern => Minieditor
Dazu habe ich im englischen Forum eine kleine Procdure gefunden.
leicht angepaßt sieht sie vereinfacht so aus.
Leider funktioniert sie nur bedingt.
Fall 1 so auskommentiert wie zu sehen kann ich sie beliebig oft anspringen und sie tut ihre Arbeit.
Fall 2 der Messagerequester wird aktiviert, dann wird nach dem vierten Aufruf im Messagerequester das Programm mit "Invalid memory access" in den Wald geschickt.
Fall 3 werden die 2 Zeilen mit "result =" aktiviert kommt der "Invalid memory access" in der Zeile mit "result =" im zweiten Aufruf schon.
Kann mir da jemand helfen ?
Alternativ wäre ich auch bereit das ganze anders zu lösen wenn es da einen neuen Ansatz gäbe.
kleiner Nachtrag
BYe Andre
Ich Versuche gerade eine in einem Editorgadget bearbeitet Datei zu speichern => Minieditor
Dazu habe ich im englischen Forum eine kleine Procdure gefunden.
leicht angepaßt sieht sie vereinfacht so aus.
Code: Alles auswählen
Procedure Editor_Save()
File.s = Ziel.s + "xyz.dat"
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(#Editor_3), #EM_STREAMOUT, #SF_RTF, @StreamData)
Else
;result = SendMessage_(GadgetID(#Editor_3), #EM_STREAMOUT, #SF_TEXT, @StreamData)
EndIf
CloseFile(FileID)
EndIf
;MessageRequester("Info", "Bitte")
;rocedureReturn result
EndProcedure
Fall 1 so auskommentiert wie zu sehen kann ich sie beliebig oft anspringen und sie tut ihre Arbeit.
Fall 2 der Messagerequester wird aktiviert, dann wird nach dem vierten Aufruf im Messagerequester das Programm mit "Invalid memory access" in den Wald geschickt.
Fall 3 werden die 2 Zeilen mit "result =" aktiviert kommt der "Invalid memory access" in der Zeile mit "result =" im zweiten Aufruf schon.
Kann mir da jemand helfen ?
Alternativ wäre ich auch bereit das ganze anders zu lösen wenn es da einen neuen Ansatz gäbe.
kleiner Nachtrag
Code: Alles auswählen
Procedure StreamFileOut_Callback(hFile, pbBuff, cb, pcb)
ProcedureReturn WriteFile_(hFile, pbBuff, cb, pcb, 0)!1
EndProcedure