Scintilla-Control auslesen (SCI_GETTEXT schlägt fehl)

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Scintilla-Control auslesen (SCI_GETTEXT schlägt fehl)

Beitrag von Kiffi »

Hallo,

ich möchte den aktuellen Text aus der PB-IDE auslesen. Das Handle des Scintilla-Controls habe ich vorher mit Spy++ ermittelt (da der Code später mal für ein PB-Tool sein soll, werde ich das Handle dann mittels GetEnvironmentVariable("PB_TOOL_Scintilla") ermitteln).

Nachfolgender Code ermittelt zwar die korrekte Länge des Textes (das schließt schon mal aus, dass ich das falsche Handle verwende), aber nicht den Text selber. Weiß jemand, warum?

Code: Alles auswählen

EnableExplicit

Define SCI
Define length
Define buffer

SCI = 2624706

length = SendMessage_(SCI, #SCI_GETLENGTH, 0, 0) 

Debug length ; hier wird die korrekte Länge ausgegeben

If length
 length + 1
 buffer = AllocateMemory(length)
 SendMessage_(SCI, #SCI_GETTEXT, length, buffer)
 Debug ">" + PeekS(buffer, -1, #PB_UTF8) + "<" ; Ausgabe: '><'
 FreeMemory(buffer)
EndIf
Danke im voraus & Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: Scintilla-Control auslesen (SCI_GETTEXT schlägt fehl)

Beitrag von Danilo »

Dein Buffer ist für das externe Scintilla-Gadget in einem anderen Process, und da kann es nicht einfach reinschreiben.

Schau mal hier: PB IDE Smart Highlight (showing selected text) implement

Dort lese ich den Text über den CharacterPointer (#SCI_GETCHARACTERPOINTER) aus. Das geschieht über OpenProcess_() und ReadProcessMemory_().
Vielleicht hilft Dir das als Start.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Scintilla-Control auslesen (SCI_GETTEXT schlägt fehl)

Beitrag von Kiffi »

Danilo hat geschrieben:Vielleicht hilft Dir das als Start.
jau, hat geholfen. :D Vielen Dank für Deinen Tipp! :allright:

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3875
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: Scintilla-Control auslesen (SCI_GETTEXT schlägt fehl)

Beitrag von bobobo »

Hmm .. Spydingsbums, wie unpopulär

Geht das noch?

(Muss als EXE aus der IDE (als tool) ausgerufen werden)

Code: Alles auswählen

scintilla=Val(GetEnvironmentVariable("PB_Tool_Scintilla"))
 If scintilla
   SendMessage_(scintilla,#SCI_SETWRAPVISUALFLAGS,#SC_WRAPVISUALFLAG_START,0)
   SendMessage_(scintilla,#SCI_SETWRAPSTARTINDENT,2,0)   ; <-- indent amount
   SendMessage_(scintilla,#SCI_SETWHITESPACEFORE,#True,RGB(4, 141, 251))   ; <- colour of marker
   SendMessage_(scintilla,#SCI_SETWRAPMODE,1-SendMessage_(scintilla,#SCI_GETWRAPMODE,0,0),0)
 EndIf
 End
;
:oops: etwas spät und etwas wenig
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Scintilla-Control auslesen (SCI_GETTEXT schlägt fehl)

Beitrag von Kiffi »

bobobo hat geschrieben:Hmm .. Spydingsbums, wie unpopulär
... aber effektiv, wenn man nicht immer wieder das Tool kompilieren will und dann in einer 'Blackbox' nach Fehlern suchen muss...

Hierfür habe ich's gebraucht: http://www.purebasic.fr/german/viewtopi ... =8&t=28267

Grüße ... Kiffi
a²+b²=mc²
Antworten