Hi all, (FPC 2.6.2 x86, trunk x64, on Windows; found similar behaviour on Linux x64)
Busy getting DBase III memo support correct ;) In fcl-db\src\dbase\dbf_common.pas we find this part used to e.g. find end of file ($1A/ASCII 26) markers in a buffer with memo data: [1] The problem is: the first MemScan function doesn't work: System.IndexByte just always return -1 even if the character is there. Tried system.indexbyte with a simple test program and of course it worked. If I comment out $ifdef fpc to force use of the second function, the $1A is found perfectly. Where lies the problem? Thanks, Reinier [1] {$ifdef FPC} function MemScan(const Buffer: Pointer; Chr: Byte; Length: Integer): Pointer; var I: Integer; begin I := System.IndexByte(Buffer, Length, Chr); if I = -1 then Result := nil else Result := Buffer+I; end; {$else} function MemScan(const Buffer: Pointer; Chr: Byte; Length: Integer): Pointer; asm PUSH EDI MOV EDI,Buffer MOV AL, Chr MOV ECX,Length REPNE SCASB MOV EAX,0 JNE @@1 MOV EAX,EDI DEC EAX @@1: POP EDI end; {$endif} _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal