Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Highlight-Erkennung: Fehler ! Wo ? (https://www.delphipraxis.net/1240-highlight-erkennung-fehler-wo.html)

rebugger 4. Nov 2002 18:10


Highlight-Erkennung: Fehler ! Wo ?
 
Delphi-Quellcode:
procedure TMain.GetDroppedFileNames(var msg : TWMDropFiles);
var
  sFileName,extension: string;
  dwFileCount,i,dwReqdLength: cardinal;
  code: TSynMemo;
begin
  dwFileCount := DragQueryFile(msg.Drop,$FFFFFFFF,nil,0);
  for i := 0 to dwFileCount - 1 do
    begin
      dwReqdLength := DragQueryFile(msg.Drop,i,nil,1);
      sFileName   := StringOfChar(#00,dwReqdLength+1);
      DragQueryFile(msg.Drop,i,PChar(sFileName),dwReqdLength+1);

      code_count := code_count+1;
      newCode(code_count,sFileName, 'open');

      code := ActiveCode();
      extension := ExtractFileExt(sFileName);

      if Pos(extension,PHPhigh.DefaultFilter) > 0 then
        code.Highlighter := PHPhigh
      else if Pos(extension,HTMLhigh.DefaultFilter) > 0 then
        code.Highlighter := HTMLhigh
      else if Pos(extension,CSShigh.DefaultFilter) > 0 then
        code.Highlighter := CSShigh
      else if Pos(extension,SQLhigh.DefaultFilter) > 0 then
        code.Highlighter := SQLhigh
      else if Pos(extension,PERLhigh.DefaultFilter) > 0 then
        code.Highlighter := PERLhigh
      else if Pos(extension,JShigh.DefaultFilter) > 0 then
        code.Highlighter := JShigh
      else
        code.Highlighter := Nil;
    end;
end;
Der stellt mir, egal welcher Dateityp Highlighter auf Nil !
.DefaultFilter ist bei allen gefüllt !
Ich habe mir alles mal per MessageDlg() anzeigen lassen !
Defaultfilter ist folgendermaßen bei PHPhigh aufgebaut:
Code:
.php.php3.php4.phtml.inc
Wenn ich nun per Drag&Drop eine .php-Datei reinziehe, macht er keinen Highlighter !
Obwohl er richtig auswählt ! Das wundert mich...

d3g 4. Nov 2002 20:24

Hi rebugger,

das liegt daran, dass der String extension in jedem Fall nullterminiert ist und '.php'#0 eben nicht im Filter vorkommt. Das heißt, du muss deinen Filter entweder so umbauen, dass Nullterminierungen darin vorkommen:
Code:
PHPHigh.DefaultFilter := '.php'#0'.php3'#0'.php4'#0'.phtml'#0'.inc'#0;
oder du entfernst die Nullterminierung:
Code:
if (extension[Length(extension)] = #0) then
  extension := Copy(extension, 1, Length(extension) - 1);
MfG,
d3g

rebugger 5. Nov 2002 13:57

Wow, danke, habe die Nullterminierung genommen !
Läuft jetzt wirklich perfekt !


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:28 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