SyntaxHighlighting mit PB4?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

ts-soft hat geschrieben:Benutzt die Highlight.dll aus dem PureBasic SDK
Jetzt mal für totale Noobs: Was ist ne PB SDK?
ts-soft hat geschrieben:ür einen Ersatzeditor findeste ein Beispiel im engl. Forum, wie oft noch?
Poste mal bitte den Link - mit der engl. SuFu bin ich noch weniger vertraut als mit der deutschen.
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Benutzeravatar
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

Beitrag von ts-soft »

>> Jetzt mal für totale Noobs: Was ist ne PB SDK?
Befindet sich nach der Installation von PureBasic auf deiner Festplatte :freak:
>> Poste mal bitte den Link - mit der engl. SuFu bin ich noch weniger vertraut als mit der deutschen
Dann lernste es, hab keine Zeit ständig für andere zu suchen
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.
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Hier ein ganz simples Beispiel :

Code: Alles auswählen

#mein_style1 = 1
#mein_style2 = 2
#mein_style3 = 3

Procedure sci_cb(hWnd,id,*scin.SCNOTIFICATION,lParam)
  Protected endstyle   = ScintillaSendMessage(id,#SCI_GETENDSTYLED,0,0)
  Protected line       = ScintillaSendMessage(id,#SCI_LINEFROMPOSITION,endstyle,0)
  Protected start_pos  = ScintillaSendMessage(id,#SCI_POSITIONFROMLINE,line,0)
  Protected end_pos    = *scin\position
  Protected first_char = 0
  
  While start_pos < end_pos
    
    first_char = ScintillaSendMessage(id,#SCI_GETCHARAT,start_pos,0)
    ScintillaSendMessage(id,#SCI_STARTSTYLING,start_pos,31)
    
    Select first_char
      Case '+','*','-','/'
        ScintillaSendMessage(id,#SCI_SETSTYLING,1,#mein_style1) 
      Case '(',')'
        ScintillaSendMessage(id,#SCI_SETSTYLING,1,#mein_style2)
      Case '0' To '9'
        ScintillaSendMessage(id,#SCI_SETSTYLING,1,#mein_style3)
      Default  
        ScintillaSendMessage(id,#SCI_SETSTYLING,1,#STYLE_DEFAULT) 
    EndSelect 
    start_pos + 1
  Wend
  
EndProcedure


InitScintilla("scilexer.dll")  

hWnd = OpenWindow(0,#PB_Ignore,#PB_Ignore,320,240,"leer")

CreateGadgetList(hWnd)
ScintillaGadget(0,0,0,320,240,0,@sci_cb())


ScintillaSendMessage(0,#SCI_STYLESETFORE,#STYLE_DEFAULT, #Black)
ScintillaSendMessage(0,#SCI_STYLESETBACK,#STYLE_DEFAULT, #White)
ScintillaSendMessage(0,#SCI_STYLECLEARALL,0,0)

ScintillaSendMessage(0,#SCI_STYLESETFORE,#mein_style1,$0000FF)
ScintillaSendMessage(0,#SCI_STYLESETFORE,#mein_style2,$FF0000)
ScintillaSendMessage(0,#SCI_STYLESETBACK,#mein_style2,$C0C0C0)

ScintillaSendMessage(0,#SCI_STYLESETFORE,#mein_style3,$00FF00)

SetGadgetText(0,"a = 1+1*(1/1)-1")

Repeat
  event = WaitWindowEvent()
  
Until event = #PB_Event_CloseWindow

Wenn du dich jetzt nicht ganz so doof anstellst, kommst du mit
der Dokumentation von Scintilla weiter.
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

@edel: Ich glaube, dein Code ist für PB3.94

@ts-soft: achso, ich dachte du hast den link schon...
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Benutzeravatar
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

Beitrag von ts-soft »

>> @edel: Ich glaube, dein Code ist für PB3.94
Nein, ganz offentsichlich für PB4.10
Vielleicht mußte den Namen der DLL noch anpassen (Scintilla.dll)
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.
Bild
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

@ts-soft: Meinst du mit Beispielcode für'n Ersatzeditor die Sources von jaPBe, oder welche meinst du?

@all: Ich denke, alleine schon ein EditorGadget, in dem nichts steht, ist mit SyntaxHighlighting zu langsam. Das Tippen ist ungefähr so, wie auf nem Atari. Buchstabe eingegeben, 1 sek. gewartet und dann steht's auf'm Monitor.
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Benutzeravatar
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

Beitrag von ts-soft »

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.
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

PureBasic4.0 hat geschrieben:@all: Ich denke, alleine schon ein EditorGadget, in dem nichts steht, ist mit SyntaxHighlighting zu langsam. Das Tippen ist ungefähr so, wie auf nem Atari. Buchstabe eingegeben, 1 sek. gewartet und dann steht's auf'm Monitor.
Das liegt eher an deinem Wissensstand. Auch in einem
EditorGadget bzw RichEdit geht das sehr schnell. Wer
allerdings nur mit UserLibs rumbasteln kann, braucht
da wohl noch eine Weile.
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

@ts-soft: Danke für den Link. Jetzt brauche ich nur noch die Scintilla_res.pb und die Scintilla_Macro.pbi. Woher bekomme ich die jetzt? Ich benutze die Scintilla.pbi Includefile. Soll ich die SciLexer.pbi auch noch hinzufügen oder brauche ich die nicht?
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Benutzeravatar
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

Beitrag von ts-soft »

Der Code ist für PB4.10, da brauchste nur die scilexer.pbi, link ist im source
angegeben.
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.
Bild
Antworten