AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SynHighlighter erweitern

Ein Thema von Codehunter · begonnen am 7. Sep 2012 · letzter Beitrag vom 12. Sep 2012
Antwort Antwort
Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: SynHighlighter erweitern

  Alt 10. Sep 2012, 11:58
Ich guck mir mal die Trial von TMS an die haben glaub ich auch so ein Teil (vermutlich *uggy wie meist, aber Versuch ist es Wert, vielleicht laesst sich der ja besser pimpen )
Guck lieber dran vorbei. Ich hab die erste Version von Syn4 mit den Toolbar-Komponenten von TMS gebaut. Grausam ohne Ende. Memleaks dass einem die Ohren schlackern, das Subclassing von Menüs funktioniert auch nur auf manchen Rechnern und manchen nicht. Hin und wieder gabs dann auch OutOfGDIResources usw. Bin grad dabei, Syn4 auf Toolbar2000 und SpTBX zu portieren.

Die TAdvMemo Komponente ist an sich nicht sooo schlecht. Sind aber nur relativ wenige Highlighter dabei. Und das Ganze ist natürlich nicht OpenSource, kannst also kein offenes Projekt damit starten.
Du kannst einem Mut machen Und nu?
Bist du bezüglich meinen Sachen da weiter gekommen irgendwie, weil du ja meintest sollte gehen?
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.284 Beiträge
 
Delphi 12 Athens
 
#2

AW: SynHighlighter erweitern

  Alt 10. Sep 2012, 12:25
Du kannst einem Mut machen Und nu?
Bist du bezüglich meinen Sachen da weiter gekommen irgendwie, weil du ja meintest sollte gehen?
Na nu mal ganz langsam mit die junge Pferde

Erstmal muss ich dahinter steigen, wie dieser blöde Hash-Algo funktioniert. Der steckt ja mehr oder weniger identisch in allen Syn-Highlightern drin. Nur mit anderen Konstanten. Ich vermute, dass die Konstanten in Abhängigkeit von der Keyword-Liste auch geändert werden müssen, damit keine Dupletten entstehen.

Darum wieder die Frage an die Algoritmus-Experten hier: Könnt ihr die Sache mal ein wenig für mich erhellen? Der Originalsource findet sich hier. Entscheidend sind die Zeilen 234 und 237:
Delphi-Quellcode:
function TSynPHPSyn.HashKey(Str: PWideChar): Cardinal;
begin
  Result := 0;
  while IsIdentChar(Str^) do
  begin
    Result := Result * 596 + Ord(Str^) * 413;
    inc(Str);
  end;
  Result := Result mod 137;
  fStringLen := Str - fToIdent;
end;
Ich verstehe halt die Bedeutung der drei Konstanten 596, 413 und 137 nicht. Wobei ich bei 137 vermute, es ist der höchstmögliche Hashwert plus 1. Doch daraus ergibt sich dann ein Henne-und-Ei-Problem: Den höchsten Hashwert bekommt man nur unter Anwendung der Hash-Routine, welche ja zu ändern wäre

Geändert von Codehunter (10. Sep 2012 um 12:52 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz