Einzelnen Beitrag anzeigen

Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#104

Re: RUTIS Engine (Scripting) [WinCE spinnt]

  Alt 7. Mai 2010, 21:23
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
Björn Zeutzheim
Codename: Performancepumpe
  Mit Zitat antworten Zitat