Einzelnen Beitrag anzeigen

PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#1

Charset detector: Wie verwenden?

  Alt 19. Apr 2016, 14:04
Hallo und schönen Tag!

Auf sourceforge gibt es ein Projekt Charset detector:

Zitat:
Charset Detector - as the name says - is a stand alone executable module for automatic charset detection of a given text.
Eigentlich sollte dies eine nützliche Funktion sein. Also habe ich versucht, Charset detector mit folgendem Code zu verwenden:

Delphi-Quellcode:
program CharsetDetectorTest;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  CodeSiteLogging,
  chsd_dll_intf,
  System.Classes,
  System.SysUtils;

var
  LFileStream: TFileStream;
  LBuffer: TBytes;
  cs: rCharsetInfo;

begin
  try
    csd_Reset;

    LFileStream := TFileStream.Create('C:\mytext.txt', fmOpenRead);
    try
      // Read file into buffer:
      SetLength(LBuffer, LFileStream.Size);
      LFileStream.ReadBuffer(Pointer(LBuffer)^, Length(LBuffer));
      CodeSite.Send('Length(LBuffer)', Length(LBuffer));

      if csd_HandleData(PWideChar(LBuffer), Length(LBuffer)) = NS_OK then
      begin
        CodeSite.Send('chsd_Done', csd_Done);

        cs := csd_GetDetectedCharset;
        CodeSite.Send('cs.Name', PAnsiChar(cs.Name)); // -> Unknown
        CodeSite.Send('cs.CodePage', cs.CodePage); // -1
        CodeSite.Send('cs.Language', PAnsiChar(cs.Language)); // -> Unknown
      end
      else
        CodeSite.Send('csd_HandleData Failed');
    finally
      LFileStream.Free;
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Leider bekomme ich als Ergebnis nur "Unknown" und -1. Was mache ich falsch?

Geändert von PeterPanino (19. Apr 2016 um 14:16 Uhr)
  Mit Zitat antworten Zitat