Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Probleme mit SynEdit (https://www.delphipraxis.net/94290-probleme-mit-synedit.html)

oki 19. Jun 2007 13:57


Probleme mit SynEdit
 
Hi Leute,

nun teste ich das Synedit, und schon seh ich nicht durch.

folgender Text:
Zitat:


{*LogInfoStart*}
[Header]
Stamp=18.06.2007 10:10:10
Sender=TServerSocketForm
InfoType=Programm
Action=Programm
[Message]
{************************************************* **********************}
GPRSCommunicator gestartet
{*LogInfoEnd*}

{*LogInfoStart*}
[Header]
Stamp=18.06.2007 10:10:10
Sender=TServerSocketForm
InfoType=Programm
Action=User
[Message]
Programmeinstellungen: Autostart der Datenbank aktiviert
{*LogInfoEnd*}

{*LogInfoStart*}
[Header]
Stamp=18.06.2007 10:10:11
Sender=TServerSocketForm
InfoType=Programm
Action=Programm
[Message]
Datenbank geöffnet
{*LogInfoEnd*}

{*LogInfoStart*}
[Header]
Stamp=18.06.2007 10:10:11
Sender=TServerSocketForm
InfoType=Programm
Action=User
[Message]
Programmeinstellungen: GMT-Zeitkorrektur aktiviert
{*LogInfoEnd*}
Das ist natürlich nur ein Ausschnitt.
Nun der Teil der Formatierung die funzt:
Zitat:

TSynSampleSyn {first Identifier is considered to be the Class Name }
tk {second Identifier is considered to be the Identifier Prefix }
IdentStart '_', 'a'..'z', 'A'..'Z':: '_', '0'..'9', 'a'..'z', 'A'..'Z'::

TOKENTYPES
Identifier
Comment Style=[fsItalic]|Foreground=clgreen
Key Foreground=clNavy|Style=[fsBold]
HeaderInfo Style=[fsBold]
|><|

KEYS
Stamp
Sender
InfoType
ClientHandle
PhoneNumber
AddInfoType
Action
|><|

KEYS HeaderInfo
Header
Message
|><|

CHARS

'A'..'Z', 'a'..'z', '_':: Ident

BeginProc
fTokenID := IdentKind((fLine + Run));
inc(Run, fStringLen);
while Identifiers[fLine[Run]] do
Inc(Run);
EndProc

|><|

ENCLOSEDBY

Comment,BraceComment,{,},MultiLine

|><|
Jetzt möchte ich aber die Keys [Header] und [Message] sowie Stamp=, Sender= usw. highlighten. Aber das geht in die Hose.

Kann mir einer sagen warum?

Gruß oki

Die Muhkuh 19. Jun 2007 13:59

Re: Probleme mit SynEdit
 
Hi oki,

willst Du, dass diese unterschiedlich gehighlightet werden? Willst du, dass das = bei Stamp mithervorgehoben wird? Die [] auch mit hervorheben?

oki 19. Jun 2007 14:08

Re: Probleme mit SynEdit
 
= und [] mit hervorheben

Die Muhkuh 19. Jun 2007 14:09

Re: Probleme mit SynEdit
 
So sollte das funktionieren:

Code:
TSynSampleSyn {first Identifier is considered to be the Class Name }
tk {second Identifier is considered to be the Identifier Prefix }
IdentStart '_', 'a'..'z', 'A'..'Z', '0'..'9', '=', '[', ']' { Man beachte hier die = [ ] }

TOKENTYPES
Identifier
Comment Style=[fsItalic]|Foreground=clgreen
Key Foreground=clNavy|Style=[fsBold]
HeaderInfo Style=[fsBold]
|><|

KEYS
Stamp=
Sender=
InfoType=
ClientHandle=
PhoneNumber=
AddInfoType=
Action=
|><|

KEYS HeaderInfo
[Header]
[Message]
|><|

CHARS

'A'..'Z', 'a'..'z', '_', '=', '[', ']':: Ident { Hier auch die = [ ] beachten }

BeginProc
fTokenID := IdentKind((fLine + Run));
inc(Run, fStringLen);
while Identifiers[fLine[Run]] do
Inc(Run);
EndProc

|><|

ENCLOSEDBY

Comment,BraceComment,{,},MultiLine

|><|

oki 19. Jun 2007 14:14

Re: Probleme mit SynEdit
 
Hi Muhkuh,

Dank schon mal. Was soll aber der Doppeleintrag hinter IdentStart mit dem doppelten Doppelpunkt?
Zitat:

IdentStart '_', 'a'..'z', 'A'..'Z':: '_', '0'..'9', 'a'..'z', 'A'..'Z'::
Gruß oki

oki 19. Jun 2007 14:21

Re: Probleme mit SynEdit
 
Wenn ich das so tue, dann highlightet er alle Bezeichner, hinter denen Ziffern stehen, die mit Text dahinter ignorierte er.

Hier wird Stamp= blau:
Zitat:

Stamp=18.06.2007 10:10:10
und hier wird Sender= ignoriert:
Zitat:

Sender=TServerSocketForm
Füge ich hinter dem = ein Space ein, so klappt es wieder.
Wie nu?

Gruß oki

Die Muhkuh 19. Jun 2007 15:02

Re: Probleme mit SynEdit
 
Hi,

ob man jetzt dem Ding sagen, wann er was highlighten soll, bezweifle ich (also über die Grammatikdatei).

Wenn man das von Hand nachbaut, funktioniert das ohne Probleme. Wenn Du hierzu ein kleines Beispiel wünscht, sag bescheid.

oki 19. Jun 2007 15:11

Re: Probleme mit SynEdit
 
Hi Manuel,

ich hab das jetzt so gemacht:
Zitat:

TSynSampleSyn {first Identifier is considered to be the Class Name }
tk {second Identifier is considered to be the Identifier Prefix }
IdentStart '_', 'a'..'z', 'A'..'Z', '[', ']', '$'

TOKENTYPES
Identifier
Comment Style=[fsItalic]|Foreground=clgreen
Key Foreground=clNavy|Style=[fsBold]
HeaderInfo Style=[fsBold]
|><|

KEYS
Stamp
Sender
InfoType
ClientHandle
PhoneNumber
AddInfoType
Action
|><|

KEYS HeaderInfo
[Header]
[Message]
|><|

CHARS

'A'..'Z', 'a'..'z', '_', '[', ']', '$':: Ident

BeginProc
fTokenID := IdentKind((fLine + Run));
inc(Run, fStringLen);
while Identifiers[fLine[Run]] do
Inc(Run);
EndProc

|><|

ENCLOSEDBY

Comment,BraceComment,{,},MultiLine

|><|
damit werden dann die = nicht mitgenommen, aber damit kann ich leben. Das $ hab ich eingefügt, weil bei mir in den Nutzdaten "$Phonenumber=" auf taucht. Das wird jetzt auch nicht markiert. so soll es sein.

ein Beispiel bräuchte ich jetzt aber für meinen Nutztext hinter [Message] bis {*LogInfoEnd*}. die beiden Bezeichner sollen daber nicht hervorgehoben werden (Mach ich ja schon seperat).

Gruß oki

Die Muhkuh 19. Jun 2007 15:25

Re: Probleme mit SynEdit
 
Hallo oki,

meinst Du jetzt als Bezeichner "Programmeinstellungen"? Ansonsten sehe ich zwischen [Message] und {*LogInfoEnd*} keinen Bezeichner, der hervorgehoben wird (laut Deiner letzten Grammatik).

oki 19. Jun 2007 15:39

Re: Probleme mit SynEdit
 
Tschuldige, falsch erläutert. Nach [Message] können mehrere Zeilen folgen. Das sind meine "Nutzdaten". Die will ich in einem anderen Style haben. Schluß mit dem Nutztext ist bei {*LogInfoEnd*} für diesen Block.

Bsp.:
Zitat:

{*LogInfoStart*}
[Header]
Stamp=11.06.2007 08:11:42
Sender=TGPRSReceiveServerClientWinSocket
InfoType=GPRSClient
ClientHandle=2425200
PhoneNumber=+49151
AddInfoType=received
Action=Programm
[Message]
$Stepp_3011*1E
$GPRMC,060905.204,A,5116.3166,N,00423.5506,E,0.00, 78.20,110607,,*31
$<end>

{*LogInfoEnd*}

{*LogInfoStart*}
[Header]
Stamp=11.06.2007 08:11:42
Sender=TGPRSReceiveServerClientWinSocket
InfoType=GPRSClient
ClientHandle=2425200
PhoneNumber=+49151
AddInfoType=decode
Action=Programm
[Message]
************************************************** *************
Ortas Positionsmeldung decodiert:
Rufnummer : +49151
Status : 3011 [Zuendung EIN]
TimeStamp : 11.06.07 08:09:05
Latitude : 51,27
Longitude : 4,39
SAT : 3D
Geschwindigkeit : 0,00
Richtung : 78,20
************************************************** *************
{*LogInfoEnd*}
Hervorheben möchte ich zusätzlich:
Zitat:

$Stepp_3011*1E
$GPRMC,060905.204,A,5116.3166,N,00423.5506,E,0.00, 78.20,110607,,*31
$<end>
und
Zitat:

************************************************** *************
Ortas Positionsmeldung decodiert:
Rufnummer : +49151
Status : 3011 [Zuendung EIN]
TimeStamp : 11.06.07 08:09:05
Latitude : 51,27
Longitude : 4,39
SAT : 3D
Geschwindigkeit : 0,00
Richtung : 78,20
************************************************** *************
Wenns nicht so ohne weiters geht, ändere ich eben mein Log. (Schreibt ja ein anderes Programm von mir)

Gruß oki


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:59 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz