function UTF8CharacterLength(p: PChar): integer;
begin
if p <> nil then
begin
if ord(p^) < %11000000 then // 00000000-01111111
begin
// regular single byte character (#0 is a character, this is pascal ;)
Result := 1;
end
else if ((ord(p^) and %11100000) = %11000000) then // 11000010-11011111
begin
// could be 2 byte character
if (ord(p[1]) and %11000000) = %10000000 then
Result := 2
else
Result := 1;
end
else if ((ord(p^) and %11110000) = %11100000) then // 11100000-11101111
begin
Ich kenne % immer als modulo (Rest einer Division). Aber das ist dann ein binärer operator.
In diesem Fall wird % unär verwendet, ich glaube theo liegt mit seiner Vermutung richtig.
MFG
Komoluna
Programmer: A device to convert coffee into software.
Komoluna hat geschrieben:Ich kenne % immer als modulo (Rest einer Division). Aber das ist dann ein binärer operator.
In diesem Fall wird % unär verwendet, ich glaube theo liegt mit seiner Vermutung richtig.
Das ist doch keine Vermutung, sondern ein Fakt, dass in Pascal mit % binäre Zahlen dargestellt werden.
Eine binäre Zahl wird in der Programmiersprache Pascal mit dem Prozentzeichen (%) als Vorzeichen dargestellt.