Browse Source

* PChar -> PAnsiChar

Michaël Van Canneyt 2 years ago
parent
commit
0a798a4b72

+ 6 - 6
packages/chm/src/chmbase.pas

@@ -33,7 +33,7 @@ const
 type
   {$PACKRECORDS C}
   TITSFHeader= record
-    ITSFsig: array [0..3] of char;
+    ITSFsig: array [0..3] of AnsiChar;
     Version: LongWord;
     HeaderLength: LongWord;
     Unknown_1: LongWord;
@@ -59,7 +59,7 @@ type
   end;
   
   TITSPHeader = record
-    ITSPsig: array [0..3] of char; // = 'ITSP'
+    ITSPsig: array [0..3] of AnsiChar; // = 'ITSP'
     Version: LongWord;             // =1
     DirHeaderLength: Longword;     // Length of the directory header
     Unknown1: LongWord;            // =$0a
@@ -82,7 +82,7 @@ type
   TDirChunkType = (ctPMGL, ctPMGI, ctAOLL, ctAOLI, ctUnknown);
   
   TPMGListChunk = record
-    PMGLsig: array [0..3] of char;
+    PMGLsig: array [0..3] of AnsiChar;
     UnusedSpace: Longword; ///!!! this value can also represent the size of quickref area in the end of the chunk
     Unknown1: Longword; //always 0
     PreviousChunkIndex: LongInt; // chunk number of the prev listing chunk when reading dir in sequence
@@ -100,7 +100,7 @@ type
   end;
   
   TPMGIIndexChunk = record
-    PMGIsig: array [0..3] of char;
+    PMGIsig: array [0..3] of AnsiChar;
     UnusedSpace: LongWord; // has a quickref area
   end;
   
@@ -112,10 +112,10 @@ type
   
 const
   ITSFHeaderGUID : TGuid = '{7C01FD10-7BAA-11D0-9E0C-00A0C922E6EC}';
-  ITSFFileSig: array [0..3] of char = 'ITSF';
+  ITSFFileSig: array [0..3] of AnsiChar = 'ITSF';
   
   ITSPHeaderGUID : TGuid = '{5D02926A-212E-11D0-9DF9-00A0C922E6EC}';
-  ITSPHeaderSig: array [0..3] of char = 'ITSP';
+  ITSPHeaderSig: array [0..3] of AnsiChar = 'ITSP';
 
   // this function will advance the stream to the end of the compressed integer
   // and return the value

+ 1 - 1
packages/chm/src/chmfiftimain.pas

@@ -278,7 +278,7 @@ begin
   begin
     FStream.Size := $400; // the header size. we will fill this after the nodes have been determined
     FStream.Position := $400;
-    FillChar(PChar(TMemoryStream(FStream).Memory)^, $400, 0);
+    FillChar(PAnsiChar(TMemoryStream(FStream).Memory)^, $400, 0);
     FHeaderRec.DocIndexRootSize := 1;
     FHeaderRec.CodeCountRootSize := 1;
     FHeaderRec.LocationCodeRootSize := 4;

+ 4 - 4
packages/chm/src/chmls.lpr

@@ -574,7 +574,7 @@ var s,
 begin
   symbolname:='helpid';
   chm:=filespec[0];
-  prefixfn:=changefileext(chm,'');
+  prefixfn:=changefileext(chm,RTLString(''));
   if not Fileexists(chm) then
     begin
       writeln(stderr,' Can''t find file ',chm);
@@ -633,7 +633,7 @@ end;
 
 begin
   chm:=filespec[0];
-  prefixfn:=changefileext(chm,'');
+  prefixfn:=changefileext(chm,RTLString(''));
   if not Fileexists(chm) then
     begin
       writeln(stderr,' Can''t find file ',chm);
@@ -721,7 +721,7 @@ var s,
     entries : integer;
 begin
   chm:=filespec[0];
-  prefixfn:=changefileext(chm,'');
+  prefixfn:=changefileext(chm,RTLString(''));
   if not Fileexists(chm) then
     begin
       writeln(stderr,' Can''t find file ',chm);
@@ -854,7 +854,7 @@ var dx : dword;
 begin
   symbolname:='helpid';
   chm:=filespec[0];
-  prefixfn:=changefileext(chm,'');
+  prefixfn:=changefileext(chm,RTLString(''));
   if not Fileexists(chm) then
     begin
       writeln(stderr,' Can''t find file ',chm);

+ 9 - 9
packages/chm/src/chmreader.pas

@@ -192,7 +192,7 @@ end;
 
 function ChunkType(Stream: TMemoryStream): TDirChunkType;
 var
-  ChunkID: array[0..3] of char;
+  ChunkID: array[0..3] of AnsiChar;
 begin
   Result := ctUnknown;
   if Stream.Size< 4 then exit;
@@ -272,7 +272,7 @@ procedure TChmReader.ReadCommonData;
    // A little helper proc to make reading a null terminated string easier
    function ReadString(const Stream: TStream; StartPos: DWord; FixURL: Boolean): String;
    var
-     buf: array[0..49] of char;
+     buf: array[0..49] of AnsiChar;
    begin
      Result := '';
      Stream.Position := StartPos;
@@ -288,7 +288,7 @@ procedure TChmReader.ReadCommonData;
      //Version: DWord;
      EntryType: Word;
      EntryLength: Word;
-     Data: array[0..511] of char;
+     Data: array[0..511] of AnsiChar;
      fSystem: TMemoryStream;
      Tmp: String;
    begin
@@ -468,7 +468,7 @@ begin
     Exit;
   if APosition < fStringsStream.Size-1 then
   begin
-    Result := PChar(fStringsStream.Memory+APosition);
+    Result := PAnsiChar(fStringsStream.Memory+APosition);
   end;
 end;
 
@@ -492,7 +492,7 @@ begin
   fURLSTRStream.ReadDWord; // URL
   fURLSTRStream.ReadDWord; // FrameName
   if fURLSTRStream.Position < fURLSTRStream.Size-1 then
-    Result := PChar(fURLSTRStream.Memory+fURLSTRStream.Position);
+    Result := PAnsiChar(fURLSTRStream.Memory+fURLSTRStream.Position);
 end;
 
 function TChmReader.CheckCommonStreams: Boolean;
@@ -604,7 +604,7 @@ end;
 
 function TITSFReader.GetChunkType(Stream: TMemoryStream; ChunkIndex: LongInt): TDirChunkType;
 var
-  Sig: array[0..3] of char;
+  Sig: array[0..3] of AnsiChar;
 begin
   Result := ctUnknown;
   Stream.Position := fDirectoryEntriesStartPos + (fDirectoryHeader.ChunkSize * ChunkIndex);
@@ -642,7 +642,7 @@ end;
 
 function TITSFReader.ReadPMGLchunkEntryFromStream(Stream: TMemoryStream; var PMGLEntry: TPMGListChunkEntry): Boolean;
 var
-Buf: array [0..1023] of char;
+Buf: array [0..1023] of AnsiChar;
 NameLength: LongInt;
 begin
   Result := False;
@@ -674,7 +674,7 @@ end;
 function TITSFReader.ReadPMGIchunkEntryFromStream(Stream: TMemoryStream;
   var PMGIEntry: TPMGIIndexChunkEntry): Boolean;
 var
-Buf: array [0..1023] of char;
+Buf: array [0..1023] of AnsiChar;
 NameLength: LongInt;
 begin
   Result := False;
@@ -1497,7 +1497,7 @@ function TITSFReader.GetBlockFromSection(SectionPrefix: String; StartPos: QWord;
   BlockLength: QWord): TMemoryStream;
 var
   Compressed: Boolean;
-  Sig: Array [0..3] of char;
+  Sig: Array [0..3] of AnsiChar;
   CompressionVersion: LongWord;
   CompressedSize: QWord;
   UnCompressedSize: QWord;

+ 4 - 4
packages/chm/src/chmsitemap.pas

@@ -188,8 +188,8 @@ type
     procedure SetItems(const AValue: TChmSiteMapItems);
     procedure CheckLookup;
   protected
-    procedure FoundTag (ACaseInsensitiveTag, AActualTag: string);
-    procedure FoundText(AText: string);
+    procedure FoundTag (ACaseInsensitiveTag, AActualTag: Ansistring);
+    procedure FoundText(AText: Ansistring);
   public
     constructor Create(AType: TSiteMapType);
     destructor Destroy; override;
@@ -274,7 +274,7 @@ begin
     FLoadDict.add(sitemapkws[en],en);
 end;
 
-procedure TChmSiteMap.FoundTag(ACaseInsensitiveTag, AActualTag: string);
+procedure TChmSiteMap.FoundTag(ACaseInsensitiveTag, AActualTag: Ansistring);
     procedure NewSiteMapItem;
     begin
       FCurrentItems.Add(TChmSiteMapItem.Create(FCurrentItems));
@@ -396,7 +396,7 @@ begin
   //end   {html}
 end;
 
-procedure TChmSiteMap.FoundText(AText: string);
+procedure TChmSiteMap.FoundText(AText: ansistring);
 begin
   //WriteLn('TEXT:', AText);
 end;

+ 1 - 1
packages/chm/src/chmspecialfiles.pas

@@ -83,7 +83,7 @@ end;
 function WriteControlDataToStream(const AStream: TStream; const LZXResetInterval,
   WindowSize, CacheSize: DWord): Integer;
 var
-  LZXC: array [0..3] of char = 'LZXC';
+  LZXC: array [0..3] of AnsiChar = 'LZXC';
 begin
   //  ::DataSpace/Storage/MSCompressed/ControlData
   Result := AStream.Position;

+ 1 - 1
packages/chm/src/chmtypes.pas

@@ -301,7 +301,7 @@ begin
 
   Stream.Write(Buffer[0], $1000);
   {$IFDEF DEBUG_CHM_CHUNKS}
-  WriteLn('Writing ', Copy(PChar(@Buffer[0]),0,4),' ChunkToStream');
+  WriteLn('Writing ', Copy(PAnsiChar(@Buffer[0]),0,4),' ChunkToStream');
   {$ENDIF}
 end;
 

+ 3 - 3
packages/chm/src/chmwriter.pas

@@ -1571,7 +1571,7 @@ var
   n  : TAVLTreeNode;
   StrRec : TStringIndex;
 begin
-  // #STRINGS starts with a null char
+  // #STRINGS starts with a null AnsiChar
   if FStringsStream.Size = 0 then FStringsStream.WriteByte(0);
 
   SpareString.TheString:=AString;
@@ -1949,8 +1949,8 @@ begin
 end;
 
 Const
-      BinIndexIdent : array[0..1] of char = (CHR($3B),CHR($29));
-      AlwaysX44     : Array[0..15] of char = ('X','4','4',#0,#0,#0,#0,#0,
+      BinIndexIdent : array[0..1] of AnsiChar = (CHR($3B),CHR($29));
+      AlwaysX44     : Array[0..15] of AnsiChar = ('X','4','4',#0,#0,#0,#0,#0,
                                               #0,#0,#0,#0,#0,#0,#0,#0);
       DataEntry     : Array[0..12] of Byte = ($00,$00,$00,$00,$05,$00,$00,$00,$80,$00,$00,$00,$00);
 {

+ 28 - 20
packages/chm/src/fasthtmlparser.pas

@@ -127,19 +127,19 @@ uses
 
 {$IFDEF DEBUGLN_ON}
   // dummy, default debugging
-  procedure debugproc(s: string);
+  procedure debugproc(s: String);
   // for custom debugging, assign this in your units 
-  var debugln: procedure(s: string) = debugproc;
+  var debugln: procedure(s: String) = debugproc;
 {$ENDIF}
 
 type
 
   // when tag content found in HTML, including names and values
   // case insensitive analysis available via NoCaseTag
-  TOnFoundTag = procedure(NoCaseTag, ActualTag: string) of object;
+  TOnFoundTag = procedure(NoCaseTag, ActualTag: AnsiString) of object;
 
   // when text  found in the HTML
-  TOnFoundText = procedure(Text: string) of object;
+  TOnFoundText = procedure(Text: AnsiString) of object;
 
   // Lars's modified html parser, case insensitive or case sensitive 
 
@@ -151,13 +151,14 @@ type
     public
       OnFoundTag: TOnFoundTag;
       OnFoundText: TOnFoundText;
-      Raw: Pchar;
-      FCurrent : PChar;
-      constructor Create(sRaw: string);overload;
-      constructor Create(pRaw: PChar);overload;
+      Raw: PAnsiChar;
+      FCurrent : PAnsiChar;
+      constructor Create(sRaw: AnsiString);overload;
+      constructor Create(sRaw: UnicodeString);overload;
+      constructor Create(pRaw: PAnsiChar);overload;
       procedure Exec;
-      procedure NilOnFoundTag(NoCaseTag, ActualTag: string);
-      procedure NilOnFoundText(Text: string);
+      procedure NilOnFoundTag(NoCaseTag, ActualTag: AnsiString);
+      procedure NilOnFoundText(Text: AnsiString);
     Public
       Function CurrentPos : Integer;
       property Done: Boolean read FDone write FDone;
@@ -168,11 +169,11 @@ implementation
 
 
 // default debugging, do nothing, let user do his own by assigning DebugLn var
-procedure debugproc(s: string);
+procedure debugproc(s: String);
 begin 
 end;
 
-function CopyBuffer(StartIndex: PChar; Length: Integer): string;
+function CopyBuffer(StartIndex: PAnsiChar; Length: Integer): AnsiString;
 begin
   SetLength(Result, Length);
   StrLCopy(@Result[1], StartIndex, Length);
@@ -182,25 +183,32 @@ end;
 
 { ************************ THTMLParser ************************************** }
 
-constructor THTMLParser.Create(pRaw: Pchar);
+constructor THTMLParser.Create(pRaw: PAnsiChar);
 begin
   if pRaw = '' then exit;
   if pRaw = nil then exit;
   Raw:= pRaw;
 end;
 
-constructor THTMLParser.Create(sRaw: string);
+constructor THTMLParser.Create(sRaw: AnsiString);
 begin
   if sRaw = '' then exit;
-  Raw:= Pchar(sRaw);
+  Raw:= PAnsiChar(sRaw);
 end;
 
+constructor THTMLParser.Create(sRaw: UnicodeString);
+
+begin
+  Create(UTF8Encode(sRaw));
+end;
+
+
 { default dummy "do nothing" events if events are unassigned }
-procedure THTMLParser.NilOnFoundTag(NoCaseTag, ActualTag: string);
+procedure THTMLParser.NilOnFoundTag(NoCaseTag, ActualTag: AnsiString);
 begin 
 end;
 
-procedure THTMLParser.NilOnFoundText(Text: string);
+procedure THTMLParser.NilOnFoundText(Text: AnsiString);
 begin 
 end;
 
@@ -219,8 +227,8 @@ var
   I: Integer;
   TagStart,
   TextStart,
-  P: PChar;   // Pointer to current char.
-  C: Char;
+  P: PAnsiChar;   // Pointer to current AnsiChar.
+  C: AnsiChar;
 begin
   {$IFDEF DEBUGLN_ON}debugln('FastHtmlParser Exec Begin');{$ENDIF}
   { set nil events once rather than checking for nil each time tag is found }
@@ -270,7 +278,7 @@ begin
         if (P^ = '"') or (P^ = '''') then
         begin
           C:= P^;
-          Inc(P); Inc(I); // Skip current char " or '
+          Inc(P); Inc(I); // Skip current AnsiChar " or '
 
           // Skip until string end
           while Not (P^ in [C, #0]) do

+ 27 - 27
packages/chm/src/htmlindexer.pas

@@ -45,16 +45,16 @@ Type
   TIndexedWord = class(TObject)
   private
     FIsTitle: Boolean;
-    FTheWord: string;
+    FTheWord: AnsiString;
     FCachedTopic: TIndexDocument;
     FDocuments: Array of TIndexDocument;
     function GetDocument ( TopicIndexNum: Integer ) : TIndexDocument;
     function GetDocumentCount: Integer;
   public
-    constructor Create(AWord: String; AIsTitle: Boolean);
+    constructor Create(AWord: AnsiString; AIsTitle: Boolean);
     destructor Destroy; override;
     function GetLogicalDocument(AIndex: Integer): TIndexDocument;
-    property TheWord: string read FTheWord write ftheword; // Always lowercase
+    property TheWord: AnsiString read FTheWord write ftheword; // Always lowercase
     property DocumentTopic[TopicIndexNum: Integer]: TIndexDocument read GetDocument;
     property DocumentCount: Integer read GetDocumentCount;
     property IsTitle: Boolean read FIsTitle write fistitle;
@@ -63,7 +63,7 @@ Type
   { TIndexedWordList }
 
   {$ifdef userb}
-  TRBIndexTree = specialize TGFOS_RBTree<String,TIndexedWord>;
+  TRBIndexTree = specialize TGFOS_RBTree<AnsiString,TIndexedWord>;
   {$endif}
 
   TForEachMethod = procedure (AWord:TIndexedWord) of object;
@@ -76,7 +76,7 @@ Type
     FInTitle,
     FInBody: Boolean;
     FWordCount: Integer; // only words in body
-    FDocTitle: String;
+    FDocTitle: AnsiString;
     FTopicIndex: Integer;
     //end vars
     FTotalDifferentWordLength: DWord;
@@ -92,16 +92,16 @@ Type
     Spare :TIndexedWord;
     {$endif}
 
-    function AddGetWord(AWord: String; IsTitle: Boolean): TIndexedWord;
+    function AddGetWord(AWord: AnsiString; IsTitle: Boolean): TIndexedWord;
     // callbacks
-    procedure CBFoundTag(NoCaseTag, ActualTag: string);
-    procedure CBFountText(Text: string);
+    procedure CBFoundTag(NoCaseTag, ActualTag: AnsiString);
+    procedure CBFountText(Text: AnsiString);
 
-    procedure EatWords(Words: String; IsTitle: Boolean);
+    procedure EatWords(Words: AnsiString; IsTitle: Boolean);
   public
     constructor Create;
     destructor  Destroy; override;
-    function  IndexFile(AStream: TStream; ATOPICIndex: Integer; AIndexOnlyTitles: Boolean): String; // returns the documents <Title>
+    function  IndexFile(AStream: TStream; ATOPICIndex: Integer; AIndexOnlyTitles: Boolean): AnsiString; // returns the documents <Title>
     procedure Clear;
     procedure AddWord(const AWord: TIndexedWord);
     procedure ForEach(Proc:TForEachMethod);
@@ -112,7 +112,7 @@ Type
     property TotalDIfferentWords: DWord read FTotalDIfferentWords;
     property TotalWordLength: DWord read FTotalWordLength;
     property TotalDifferentWordLength: DWord read FTotalDifferentWordLength;
-    property Words[AWord: String; IsTitle: Boolean] : TIndexedWord read AddGetWord;
+    property Words[AWord: AnsiString; IsTitle: Boolean] : TIndexedWord read AddGetWord;
   end;
 
 implementation
@@ -127,9 +127,9 @@ begin
     Result := BNumber;
 end;
 
-const titlexlat : array [boolean] of char = ('0','1');
+const titlexlat : array [boolean] of AnsiChar = ('0','1');
 
-function  makekey( n : string;istitle:boolean):string; inline;
+function  makekey( n : AnsiString;istitle:boolean):AnsiString; inline;
 
 begin
    result:=n+'___'+titlexlat[istitle];
@@ -149,10 +149,10 @@ begin
 end;
 
 { TIndexedWordList }
-function TIndexedWordList.AddGetWord(AWord: String; IsTitle: Boolean): TIndexedWord;
+function TIndexedWordList.AddGetWord(AWord: AnsiString; IsTitle: Boolean): TIndexedWord;
 var 
 {$ifdef userb}
-   key : string;
+   key : AnsiString;
 {$else}
    n : TAVLTreeNode;
 {$endif}   
@@ -197,7 +197,7 @@ begin
   Inc(FTotalWordCount);
 end;
 
-procedure TIndexedWordList.CBFoundTag(NoCaseTag, ActualTag: string);
+procedure TIndexedWordList.CBFoundTag(NoCaseTag, ActualTag: AnsiString);
 begin
   if FInBody then begin
     if NoCaseTag = '</BODY>' then FInBody := False;
@@ -212,7 +212,7 @@ begin
   if FInBody and FIndexTitlesOnly then FParser.Done := True;
 end;
 
-procedure TIndexedWordList.CBFountText(Text: string);
+procedure TIndexedWordList.CBFountText(Text: AnsiString);
 begin
   if Length(Text) < 1 then
     Exit;
@@ -223,10 +223,10 @@ begin
   EatWords(Text, FInTitle and not FInBody);
 end;
 
-procedure TIndexedWordList.EatWords ( Words: String; IsTitle: Boolean ) ;
+procedure TIndexedWordList.EatWords ( Words: AnsiString; IsTitle: Boolean ) ;
 var
-  WordPtr: PChar;
-  WordStart: PChar;
+  WordPtr: PAnsiChar;
+  WordStart: PAnsiChar;
   InWord: Boolean;
   IsNumberWord: Boolean;
   function IsEndOfWord: Boolean;
@@ -240,13 +240,13 @@ var
   end;
   var
     WordIndex: TIndexedWord;
-    WordName: String;
+    WordName: AnsiString;
     FPos: Integer;
 begin
   if IsTitle then
     FDocTitle := Words;
   Words := LowerCase(Words);
-  WordStart := PChar(Words);
+  WordStart := PAnsiChar(Words);
   WordPtr := WordStart;
   IsNumberWord := False;
   InWord := False;
@@ -328,9 +328,9 @@ begin
   inherited Destroy;
 end;
 
-function TIndexedWordList.IndexFile(AStream: TStream; ATOPICIndex: Integer; AIndexOnlyTitles: Boolean): String;
+function TIndexedWordList.IndexFile(AStream: TStream; ATOPICIndex: Integer; AIndexOnlyTitles: Boolean): AnsiString;
 var
-  TheFile: String;
+  TheFile: AnsiString;
 begin
   FInBody := False;
   FInTitle:= False;
@@ -380,7 +380,7 @@ end;
 
 procedure TIndexedWordList.ForEach(Proc:TForEachMethod);
 {$ifdef userb}
-var key : string;
+var key : AnsiString;
     val:TIndexedWord;
 {$else}
 var   
@@ -407,7 +407,7 @@ end;
 procedure TIndexedWordList.ForEach(Proc:TForEachProcedure;state:pointer); 
 
 {$ifdef userb}
-var key : string;
+var key : AnsiString;
     val:TIndexedWord;
 {$else}
 var   
@@ -457,7 +457,7 @@ begin
   Result := Length(FDocuments);
 end;
 
-constructor TIndexedWord.Create(AWord: String; AIsTitle: Boolean);
+constructor TIndexedWord.Create(AWord: AnsiString; AIsTitle: Boolean);
 begin
   FTheWord := AWord;
   FIsTitle := AIsTitle;

+ 34 - 34
packages/chm/src/htmlutil.pas

@@ -55,7 +55,7 @@ function GetNameValPair_cs(tag, attribname: string): string;
 
 implementation
 
-function CopyBuffer(StartIndex: PChar; Len: integer): string;
+function CopyBuffer(StartIndex: PAnsiChar; Len: integer): string;
 var s : String;
 begin
   SetLength(s, Len);
@@ -66,10 +66,10 @@ end;
 { Return tag name, case preserved }
 function GetTagName(const Tag: string): string;
 var
-  P : Pchar;
-  S : Pchar;
+  P : PAnsiChar;
+  S : PAnsiChar;
 begin
-  P := Pchar(Tag);
+  P := PAnsiChar(Tag);
   while P^ in ['<',' ',#9] do 
     inc(P);
   S := P;
@@ -84,10 +84,10 @@ end;
 { Return tag name in uppercase }
 function GetUpTagName(const tag: string): string;
 var
-  P : Pchar;
-  S : Pchar;
+  P : PAnsiChar;
+  S : PAnsiChar;
 begin
-  P := Pchar(uppercase(Tag));
+  P := PAnsiChar(uppercase(Tag));
   while P^ in ['<',' ',#9] do 
     inc(P);
   S := P;
@@ -104,19 +104,19 @@ end;
   Lars' fixed version }
 function GetNameValPair(const tag, attribname_ci: string): string;
 var
-  P    : Pchar;
-  S    : Pchar;
+  P    : PAnsiChar;
+  S    : PAnsiChar;
   UpperTag,
   UpperAttrib   : string;
   Start: integer;
   L    : integer;
-  C    : char;
+  C    : AnsiChar;
 begin
   // must be space before case insensitive NAME, i.e. <a HREF="" STYLE=""
   UpperAttrib:= ' ' + Uppercase(attribname_ci);
   UpperTag:= Uppercase(Tag);
-  P:= Pchar(UpperTag);
-  S:= StrPos(P, Pchar(UpperAttrib));
+  P:= PAnsiChar(UpperTag);
+  S:= StrPos(P, PAnsiChar(UpperAttrib));
 
   if S <> nil then
   begin
@@ -150,8 +150,8 @@ begin
     end;
 
     L:= P - S;
-    Start:= S - Pchar(UpperTag);
-    P:= Pchar(Tag);
+    Start:= S - PAnsiChar(UpperTag);
+    P:= PAnsiChar(Tag);
     S:= P;
     inc(S, Start);
  
@@ -163,13 +163,13 @@ end;
 { Get value of attribute, e.g WIDTH=36 -return-> 36, preserves case sensitive }
 function GetValFromNameVal(const namevalpair: string): string;
 var
-  P: Pchar;
-  S: Pchar;
-  C: Char;
+  P: PAnsiChar;
+  S: PAnsiChar;
+  C: AnsiChar;
 begin
   Result := '';
 
-  P:= Pchar(namevalpair);
+  P:= PAnsiChar(namevalpair);
   S:= StrPos(P, '=');
 
   if S <> nil then     
@@ -214,18 +214,18 @@ end;
   Bug: when finding 'ID', function finds "width", even though width <> "id" }
 function GetNameValPair_JAMES(tag, attribname_ci: string): string;
 var
-  P    : Pchar;
-  S    : Pchar;
+  P    : PAnsiChar;
+  S    : PAnsiChar;
   UT,
   UA   : string;
   Start: integer;
   L    : integer;
-  C    : char;
+  C    : AnsiChar;
 begin
   UA:= Uppercase(attribname_ci);
   UT:= Uppercase(Tag);
-  P:= Pchar(UT);
-  S:= StrPos(P, Pchar(UA));
+  P:= PAnsiChar(UT);
+  S:= StrPos(P, PAnsiChar(UA));
   if S <> nil then
   begin
 
@@ -257,8 +257,8 @@ begin
     end;
 
     L:= P - S;
-    Start:= S - Pchar(UT);
-    P:= Pchar(Tag);
+    Start:= S - PAnsiChar(UT);
+    P:= PAnsiChar(Tag);
     S:= P;
     inc(S, Start);
     result:= CopyBuffer(S, L);
@@ -277,12 +277,12 @@ end;
 { return name=value portion, case sensitive, case preserved }
 function GetNameValPair_cs(Tag, attribname: string): string;
 var
-  P    : Pchar;
-  S    : Pchar;
-  C    : Char;
+  P    : PAnsiChar;
+  S    : PAnsiChar;
+  C    : AnsiChar;
 begin
-  P := Pchar(Tag);
-  S := StrPos(P, Pchar(attribname));
+  P := PAnsiChar(Tag);
+  S := StrPos(P, PAnsiChar(attribname));
   if S<>nil then
   begin
     P := S;
@@ -342,13 +342,13 @@ function GetValFromNameVal(namevalpair: string): string;
     substring in name=value pair}
   function ReturnPos(attribute: string): TAttribPos;
   var
-    P    : Pchar;
-    S    : Pchar;
-    C    : Char;
+    P    : PAnsiChar;
+    S    : PAnsiChar;
+    C    : AnsiChar;
   begin
     result.startpos:= 0;
     result.len:= 0;
-    P:= Pchar(uppercase(Attribute));
+    P:= PAnsiChar(uppercase(Attribute));
     // get substring including and everything after equal
     S:= StrPos(P, '=');
     result.startpos:= pos('=', P); 

+ 3 - 3
packages/chm/src/itolitlstypes.pas

@@ -29,7 +29,7 @@ uses ChmBase;
 
 type
 
-  TSig = array[0..3] of char;
+  TSig = array[0..3] of AnsiChar;
   TITOLITLSHeader = record
    Sig: Array [0..1] of TSig; //  ITLO/ITLS
    Version: DWord; // = 1
@@ -58,7 +58,7 @@ type
   end;
 
   TITSFHeaderV4= record
-    ITSFsig: array [0..3] of char;
+    ITSFsig: array [0..3] of AnsiChar;
     Version: LongWord;
     HeaderLength: LongWord;
     Unknown_1: LongWord;
@@ -71,7 +71,7 @@ type
     Sig: TSig; // CAOL
     Version: DWord; // 2
     CAOLSize: DWord; // includes ITSF section = $50
-    CompilerID: array [0..1] of char; // = "HH"
+    CompilerID: array [0..1] of AnsiChar; // = "HH"
     Unknown: Word; // 0
     Unknown1: DWord; // $43ED or 0
     DirChunkSize: DWord; // $2000