Delphi-PRAXiS

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 [UniSynEdit] Zugriffsverletzung bei SynGen (https://www.delphipraxis.net/128993-%5Bunisynedit%5D-zugriffsverletzung-bei-syngen.html)

Zwoetzen 10. Feb 2009 21:25


[UniSynEdit] Zugriffsverletzung bei SynGen
 
Hi DP'ler

immer wenn hier im Forum das Wort Highlighter fällt, kommt direkt darauf die Komponente SynEdit ^^

Da ich für mein aktuelles Projekt einen eigenen Highlighter ganz gut gebrauchen könnte, hab ich mir mal das SynEdit (bzw. genauer gesagt das UniSynEdit wegen D2009) runtergeladen und angeschaut. Soweit so gut...

Hab nun angefangen, dass Tutorial durchzuarbeiten, aber ich kriege das SynGen einfach nicht zum Laufen:
Nach dem ich das SynGen-Projekt geöffnet, kompiliert, gestartet und die .msg Datei (Das erste Beispiel) geladen habe, sollte man ja irgendwann auch mal auf Start klicken ^^, aber da bekomm ich nur:
Zitat:

Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000
(bzw. die aufgeblähte Version, wenn ich es mit Debugger starte)


Kann mir jemand sagen, was ich falsch mache? :(

MfG Zwoetzen

Meflin 10. Feb 2009 21:55

Re: [UniSynEdit] Zugriffsverletzung bei SynGen
 
Zitat:

Zitat von Zwoetzen
Kann mir jemand sagen, was ich falsch mache?

Ohne jeglichen Quelltext wird das schwierig :glaskugel:

Vermutlich erzeugst du irgendwas nicht richtig - da die Fehlermeldung ja besagt, dass du auf etwas zugreifst, was es nicht gibt.

Zwoetzen 10. Feb 2009 22:03

Re: [UniSynEdit] Zugriffsverletzung bei SynGen
 
Es geht um das SynGen: Das liegt als fertiges Projekt vor und sollte entsprechend auch ohne Änderungen laufen, oder nicht? ;)

Zwoetzen 11. Feb 2009 10:36

Re: [UniSynEdit] Zugriffsverletzung bei SynGen
 
Okay, habe den Fehler gefunden und konnte ihn beheben:

Beim Reinladen der .msg-Datei (via Stream) wurde der Inhalt komplett zerstört (bzw falsch interpretiert), sodass zB statts "AB" irgendein chinesisches/japanisches Zeichen dabei rauskam. Habe nun das Reinladen der Datei anstatt über einen Stream über eine TStringList realisiert, und nun funktioniert auch alles so, wie es soll: Das Programm läuft durch und tut das, was es soll :)
(kA ob das auch über Streams zu reparieren gewesen wäre... Hab noch nie mit Streams gearbeitet ^^)

Der geänderte Code:
(Der auskommentierte Teil ist der ursprüngliche Code)
Delphi-Quellcode:
procedure TFrmMain.BtnStartClick(Sender: TObject);
var
  SL: TStringList; // <-- ADDED
begin
  ClearAll;

  Screen.Cursor := crHourGlass;

  // BEGIN EDIT
  SL := TStringList.Create;
  SL.LoadFromFile(OpenDialog.FileName);
  Lex.Origin := PWideChar(SL.Text);
  SL.Free;

(*
  Stream.Clear;
  Stream.LoadFromFile(OpenDialog.FileName);
  Lex.Origin := Stream.Memory;
*)
  // END EDIT

  Lex.Tokenize; // <-- Hier drin hats immer geknallt, weil der Dateiinhalt falsch interpretiert wurde
  [...]
end;
MfG Zwoetzen

nahpets 11. Feb 2009 11:44

Re: [UniSynEdit] Zugriffsverletzung bei SynGen
 
Hallo,

würde auch das
Delphi-Quellcode:
Lex.Origin := PWideChar(Stream.Memory);
funktionieren?
(Habe keine passende Delphiversion, um das selbst auszuprobieren :( )

Zwoetzen 11. Feb 2009 12:03

Re: [UniSynEdit] Zugriffsverletzung bei SynGen
 
Zitat:

Zitat von nahpets
Hallo,

würde auch das
Delphi-Quellcode:
Lex.Origin := PWideChar(Stream.Memory);
funktionieren?
(Habe keine passende Delphiversion, um das selbst auszuprobieren :( )

Nein, das ändert nichts an der Fehlinterpretation der Datei, dh anschließend stehen in Lex.Origin wieder fast komplett chinesische Zeichen.
(Kann jemand chinesisch? Vielleicht isses ne geheime Botschaft :lol: )


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:21 Uhr.

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