Seite 1 von 1
Scintilla SETTEXT
Verfasst: 19.11.2010 17:49
von mbuettner
Hallo,
heute habe ich festgestellt, das unter Windows einige Dateien bei mienem Editor nicht geöffnet werden (im Sinne von: Inhalt wird nicht angezeigt), mein Vater vermutet, es hängt mit irgendwelchen Zeichen zusammen, die veranlassen, dass so ein Befehl wie ClearScreen ausgeführt wird, also nichts mehr im ScintillaGadget steht. Gut, Dateien überprüft, allerdings habe ich die ja selbst mit meinem Editor erstellt, also kann es eigentlich wohl kaum sein, dass die nicht geöffnet werden. Das passiert mir jedoch nur unter Windows, und auch nur bei einzelnen Dateien. Das einzige, was die gemeinsam haben ist:
- Sie liegen auf dem gleichen Laufwerk (USB-Stick)
- Es sind Konfigurationsdateien.
Woran könnte das liegen?
Ich benutze Scintillahelper (SCI_LoadFile)
MfG
Markus
P.S: ts-soft, bitte auf die Signatur schauen!
Re: Scintilla SETTEXT
Verfasst: 19.11.2010 18:05
von ts-soft
mbuettner hat geschrieben:P.S: ts-soft, bitte auf die Signatur schauen!
Was nützt das, wenn trotzdem alle erforderlichen Infos fehlen
Wo sind die Dateien, wo der Source? Es sind überhaupt keine Infos vorhanden
Du suchst wohl schon wieder:
Ich finde es zwar nett, das Du uns das Hellsehen zutraust, aber bei den meisten ist dies nicht der Fall.
Gruß
Thomas
PS: Ich vermute mal, in dem nicht vorhandenem Source fehlt ein CloseFile()
Re: Scintilla SETTEXT
Verfasst: 19.11.2010 21:12
von c4s
Da fehlt in der Tat einiges an Informationen. Ich werfe deswegen einfach mal mit ein paar Stichworten um mich:
Unicode, Ascii, BOM, CloseFile(), ReadFile()=0, ABCDEF ...
Re: Scintilla SETTEXT
Verfasst: 19.11.2010 21:46
von ts-soft
Ich hab in ähnlich s Probl m. Hab in Dat i g öffn t, in hin ingpackt und wi d r g schloss n. J tzt v rmiss ich m in
// edit
hat sich erledigt, hab mein e wiedergefunden.
Re: Scintilla SETTEXT
Verfasst: 20.11.2010 02:05
von Häns

H h h h !
//edit: fehlendes i entdeckt...
Re: Scintilla SETTEXT
Verfasst: 20.11.2010 12:55
von mbuettner
@ts-soft:
mbuettner hat geschrieben:Ich benutze Scintillahelper (SCI_LoadFile)
Sagt das nicht schon fast alles aus? Nachdem das ganze Lesen von Scintillahelper übernommen wird, habe ich damit nichts am Hut. Hier vielleicht noch die Prozedur, wo SCI_LoadFile aufgerufen wird:
Code: Alles auswählen
Procedure OFile(file.s, fileid.l)
ReDim paths(fileid)
paths(fileid) = GetPathPart(file)
ReDim files(fileid)
files(fileid) = GetFilePart(file)
AddGadgetItem(0,CountGadgetItems(0),GetFilePart(file),ImageID(100))
ScintillaGadget(100 + fileid,0,0,WindowWidth(0)-5,WindowHeight(0)-95,#Null)
If SCI_LoadFile(100 + fileid,file) = #True
ScintillaSendMessage(100+fileid,#SCI_SETSAVEPOINT)
ScintillaSendMessages(100+fileid,LineWrapping)
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Und für alle, die Scintillahelper nicht benutzen:
Code: Alles auswählen
Procedure SCI_LoadFile(ID, FileName.s)
Protected FF, Format, length, *mem, Text.s
FF = ReadFile(#PB_Any, FileName)
If FF
Select ReadStringFormat(FF)
; hier wird das StringFormat ermittelt und entsprechend gleich die Codepage eingestellt
Case #PB_Unicode
Format = #PB_Unicode
ScintillaSendMessage(ID, #SCI_SETCODEPAGE, 65001)
Case #PB_UTF8
Format = #PB_UTF8
ScintillaSendMessage(ID, #SCI_SETCODEPAGE, #SC_CP_UTF8)
Default
Format = #PB_Ascii
ScintillaSendMessage(ID, #SCI_SETCODEPAGE, 0)
EndSelect
length = Lof(FF)
If length
*mem = AllocateMemory(length)
If *mem
If ReadData(FF, *mem, length)
Text = PeekS(*mem, length, Format)
If SCI_SetGadgetText(ID, Text.s)
FreeMemory(*mem)
CloseFile(FF)
ProcedureReturn #True
EndIf
Else
MessageRequester(#Name,"Can't read data!")
EndIf
EndIf
EndIf
CloseFile(FF)
EndIf
EndProcedure
MfG
Markus
Re: Scintilla SETTEXT
Verfasst: 21.11.2010 00:41
von ts-soft
Eigentlich habe ich die Lösung schon angedeutet, trotz mangelnder Infos, aber hier nochmal:
Code: Alles auswählen
Define.s File = GetTemporaryDirectory() + "test.txt"
If CreateFile(0, File)
WriteStringN(0, "hallo test")
CloseFile(0)
If OpenFile(1, File)
Debug ReadString(1)
If Not ReadFile(2, File)
Debug File + " konnte nicht geöffnet werden, da in Benutzung"
EndIf
EndIf
EndIf
Kann natürlich auch ein fremdes Programm sein, das die Dateien geöffnet hat. Manche
Programme haben ihre Konfigurations-Dateien auch solange offen, bis sie beendet werden.
Nächstes mal bitte einen ausführbaren Code und keine einzelnen Proceduren oder Schnippsel,
die sind meist unnütz. Die Dateien, welche nicht geladen werden als Download wäre auch
sinnvoll.
Erst nachdenken, welche Infos bräucht jemand anders um das Problem nachzuvollziehen und
wie stelle ich Ihm diese so zur Verfügung, das er möglichst keine Arbeit damit hat.
Gruß
Thomas