Das assembler-Schlüsselwort ist zwar seit Jahrzehnten nicht mehr nötig, aber egal,
und sonst funktioniert dieser Code eigentlich immernoch (Delphi 12).
Ja, aber nicht mit Win64
Was heißt fehlt?
Die Funktion selbst ist weg, also im Turbopower, nicht im Delphi, oder wie?
Ja genau. Die ist einfach nicht mehr drin.
Du hast sie ja noch, also warum nicht einfach kopieren und in eigene
Unit?
Wegen Win64
Seit vielen Jahren gibt es die
Unit AnsiStrings, bzw. inzwischen System.AnsiStrings, in welcher sich seit 2009 die
ANSI-Versionen vieler Funktionen aus z.B. SysUtils verstecken.
Ja, verwende ich auch häufig.
Durch die Variable wird der Code etwas aufgebläht, aber Hauptsache es geht.
Delphi-Quellcode:
// würde auch mit Win64 funktionieren
function LoCase(C: AnsiChar): AnsiChar;
var
P:
array[0..1]
of AnsiChar;
begin
P[0] := C;
// PWideChar(@P)^ := WideChar(C {and #$00FF});
P[1] := #0;
Result := CharLowerA(@P)[0];
// Result := Winapi.Windows.CharLowerA(@P)[0];
end;
Danke. Das hilft.

Geschwindigkeit ist hier sicher kein Problem. Es muss nicht mehr mit 4.77Mhz laufen wie damals.
oder
Delphi-Quellcode:
function LoCase(C: AnsiChar): AnsiChar;
begin
Result := System.AnsiStrings.LowerCase(C)[1];
end;
Du meinst das ist identisch? Verwendet die auch CharLowerA? Wenn ich es richtig lese konvertiert System.AnsiStrings.LowerCase nur
ASCII