editor mit Worterkennung

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

editor mit Worterkennung

Beitrag von sen-me »

Code: Alles auswählen

If OpenWindow(0,0,0,800,600,#PB_Window_TitleBar|#PB_Window_ScreenCentered,"Test") And CreateGadgetList(WindowID())
 EditorGadget(0,0,0,800,600)
 Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
wie kann ich nun bestimmte Wörter z.b. "weil" fett und farbig machen? den andren text schwarz

und z.b. alles was in " " steht nur farbig machen?

beispiel:
Text:
weil der string "weil ich schlief" nicht definiert ist
sollte so aussehen:
weil der string "weil ich schlief" nicht definiert ist
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Schau mal auf der PureArea. Dort findest du die Syntax-Library von Dark Dragon.
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

cool danke, aber gibts auch ne funktion die !komplette wörter! überprüft? weil if wird nur rot dargestellt, wen If da steht

(wie in pb halt
wenn man if schreibt wirds automatisch If)
und endif ist dan auch nicht end if sondern eben halt endif (also muss er ganze wörter überprüfen!
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

sen-me hat geschrieben:cool danke, aber gibts auch ne funktion die !komplette wörter! überprüft? weil if wird nur rot dargestellt, wen If da steht

(wie in pb halt
wenn man if schreibt wirds automatisch If)
und endif ist dan auch nicht end if sondern eben halt endif (also muss er ganze wörter überprüfen!
Kann die Library auch ;) musst einfach CorrectWordsLine oder CorrectWordsAll benutzen und erst dann highlighten.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

die lib scheints aber nicht zu können ??? (zumindest erkennt PB nicht die funktion, weil er ja in der statusbar normalerwqeise die parameters anzeigt)
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

sen-me hat geschrieben:die lib scheints aber nicht zu können ??? (zumindest erkennt PB nicht die funktion, weil er ja in der statusbar normalerwqeise die parameters anzeigt)
http://www.purearea.net/pb/showcase/sho ... ion=myProj

Da ist der source doch dabei, dann kannste ja auch gleich den nehmen.

[EDIT]
aba da stört mich noch eins, man kann nicht den button gedrückt halten und man siehts ergebnis direkt
Liegt am WindowEvent() mit Delay(20):

Code: Alles auswählen

;CorrectWords is for the correction of "endif" to "EndIf"...

#WindowWidth  = 640
#WindowHeight = 480
#WindowFlags  = #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_SystemMenu

hWnd = OpenWindow(0, 0, 0, #WindowWidth, #WindowHeight, #WindowFlags, "SyntaxHighlighting")

CreateGadgetList(WindowID())
EditorGadget(0, 0, 0, 640, 460)
HideGadget(0, 1)

CreateStatusBar(0, WindowID())
AddStatusBarField(5000)

SetGadgetText(0, "If MessageRequester("+Chr(34)+Chr(34)+", "+Chr(34)+"i = (i + (1 - 2))"+Chr(34)+", #PB_MessageRequester_YesNo) = 6"+Chr(10)+"i = (i + (1 - 2))"+Chr(10)+"EndIf")

ClearHighlightingAll(0, RGB(0, 0, 0), 10, "Arial", 0)
CorrectWordsAll(0, "If_End_EndIf_Repeat_Until_Repeat_Until_Forever_While_Wend_(_)_-_+_=_<_>_|_0_1_2_3_4_5_6_7_8_9_/_*_%_&_[_]_:_!_"+Chr(34)+"", "_")
SyntaxHighlightingAll(0, "If_End_EndIf_Repeat_Until_Repeat_Until_Forever_While_Wend", "_", RGB(255, 0, 0), RGB(255, 255, 255), 10, "Arial", #CFM_BOLD)
SyntaxHighlightingAll(0, "(_)_-_+_=_<_>_|_0_1_2_3_4_5_6_7_8_9_/_*_%_&_[_]_:_!_"+Chr(34)+"", "_", RGB(0, 0, 255), RGB(255, 255, 255), 10, "Arial", 0)
HideGadget(0, 0)

RemoveKeyboardShortcut(0, #PB_Shortcut_Tab)

Repeat
  StatusBarText(0, 0, GetCurrentWritingWord(0))
  
  NewText.s = GetGadgetText(0)
  If OldText.s <> NewText.s
    ClearHighlightingLine(0, RGB(0, 0, 0), 10, "Arial", 0)
    CorrectWordsLine(0, "If_End_EndIf_Repeat_Until_Repeat_Until_Forever_While_Wend_(_)_-_+_=_<_>_|_0_1_2_3_4_5_6_7_8_9_/_*_%_&_[_]_:_!_"+Chr(34)+"", "_")
    SyntaxHighlightingLine(0, "If_End_EndIf_Repeat_Until_Repeat_Until_Forever_While_Wend", "_", RGB(255, 0, 0), RGB(255, 255, 255), 10, "Arial", #CFM_BOLD)
    SyntaxHighlightingLine(0, "(_)_-_+_=_<_>_|_0_1_2_3_4_5_6_7_8_9_/_*_%_&_[_]_:_!_"+Chr(34)+"", "_", RGB(0, 0, 255), RGB(255, 255, 255), 10, "Arial", 0)
    OldText = NewText
  EndIf
  
  Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
End
Zuletzt geändert von DarkDragon am 09.08.2005 12:29, insgesamt 1-mal geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

die scheint aktueller zu sein

edit:
aba da stört mich noch eins, man kann nicht den button gedrückt halten und man siehts ergebnis direkt
Antworten