Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi AnsiPos liefert ein anderes Ergebnis zurück, als Pos! Wieso? (https://www.delphipraxis.net/33399-ansipos-liefert-ein-anderes-ergebnis-zurueck-als-pos-wieso.html)

hitzi 6. Nov 2004 12:42


AnsiPos liefert ein anderes Ergebnis zurück, als Pos! Wieso?
 
Hallo,

ich habe folgenden Code:

Code:
const cATOK = #13 + #10 + 'OK' + #13 + #10;
[....]
  // fObexRecvBuffer beinhaltet zu diesem Zeitpunkt #0#3#$D#$A'OK'#$D#$A
  if AnsiPos(cATOK, fObexRecvBuffer) > 0 then begin //liefert als Ergebnis 0 zurück, obwohl der gesuchte String in fObexRecvBuffer ist
als Gegenstück:
Code:
const cATOK = #13 + #10 + 'OK' + #13 + #10;
[....]
  // fObexRecvBuffer beinhaltet zu diesem Zeitpunkt #0#3#$D#$A'OK'#$D#$A
  if Pos(cATOK, fObexRecvBuffer) > 0 then begin //liefert als Ergebnis 1 zurück, wie's auch sein sollte

Wieso kommt es zu solch einen unterschiedlichen Verhalten? Der einzige Unterschied zu POS ist doch, dass AnsiPos auch MultiByte Zeichen verwenden kann.

MfG Hitzi

Robert Marquardt 6. Nov 2004 14:46

Re: AnsiPos liefert ein anderes Ergebnis zurück, als Pos! Wi
 
Ein Blick in die VCL Sourcen ergibt das AnsiPos mit AnsiStrPos implementiert ist.
Das bedeutet es arbeitet mit nullterminierten Strings (C Strings).
Die Funktion scheitert also am Stringende #0.

hitzi 6. Nov 2004 15:19

Re: AnsiPos liefert ein anderes Ergebnis zurück, als Pos! Wi
 
Danke für deinen Hinweis.

Schönes Wochenende noch.


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