Das ist aber sehr schade...
Delphi kommt mit meinem ganannten Beispiel dort nicht zurecht.
Wenn ich so etwas wie
(PCardinal(@Data[adr])^) := val;
schreibe sagt der: "[Pascal Fehler]: E2064 Der linken Seite kann nichts zugewiesen werden"
Also bleibt mir da fast nur noch eine Variante mit dem inline oder ich muss das ganze dann so schreiben:
{$ifdef WinCE}unaligned({$endif}PCardinal(@Data[adr])^{$ifdef WinCE}){$endif} := val;
EDIT:
Gute Neuigkeiten!
Das mit der inline-Funktion funktioniert gut (zumindest beim auslesen von Werten):
Delphi-Quellcode:
function GetPCardinal(const Adr: PCardinal): Cardinal; inline;
begin
{$ifdef WinCE}
Result := unaligned(Adr^);
{$else WinCE}
Result := Adr^;
{$endif}
end;
Function TRutisStack.PopCardinal : Cardinal;
Begin
//So sah die alte Zeile aus:
Result := PCardinal(Data[Top - 4])^;
//Und so die neue
Result := GetPCardinal(Data[Top - 4]); //Die neue Anweisung, die am ende dennoch die
//gleichen Assembler-Befehle ergibt dank inline
Pop(4);
End;
MFG