Forum: Win32/Win64 API (native code)
by himitsu,
6. Mai 2021
Ja klar, 64 Bit sollte ja die selben mathematischen Gesetze verwenden, so wie das ganze Universum auch. :angle:
Pointer(NativeInt(param^.InBuffer) + param^.InPosition)^
(PByte(param^.InBuffer) + param^.InPosition)^
Und Delphi macht quasi implizit ein *1 da rein ... OK, diese 1 wird wegoptimiert, weil unnötig, drum findeste es hier nicht im Compilat/Assembler,
aber für Neugierige zum...
Forum: Win32/Win64 API (native code)
by himitsu,
6. Mai 2021
War ein Denk-/Guckfehler.
Hatte es grade oben im Post nochmal berichtig. :oops:
Ja, würde gehen, aber nur mit einem Typen, der hierfür 1 Byte groß sind.
z.B. PByte
Würde das Offset z.B. 4 sein, also p+x*4, dann wäre auch ein 4 Byte-Typ OK und dann das *4 weglassen, weil es implizit über den Typ vom Compiler rein kommt.
Forum: Win32/Win64 API (native code)
by himitsu,
6. Mai 2021
Ja.
Oder weglassen?
-> Direkt nach Pointer casten.
Ups, bei den Klammern verrutscht.
Wenn Pointer-Arithmetik aktiv ist (könnte aber jemand so unnett sein und es deaktivieren), dann kann man z.B. auch PByte für solche Casts benutzen.
Es müsste auch eine .O .OBJ geben, bzw. die sollte man sich aus den Quellcodes kompilieren können,
Forum: Win32/Win64 API (native code)
by himitsu,
2. Okt 2020
Erstmal kommt es drauf an wie du das benutzt.
mit Streams, DynArrays oder auf einem statischen Buffer, also ob die Funktionen direkt oder mit noch was dazwischen ... teilweise sind die Funktionen schon bissl "ungünstig" aufgebaut.
Ansonsten kann Embarcadero nicht direkt etwas für das Tempo.
Hier wird ein vorkompilierter Fremdcode benutzt, von dem ich jetzt aber nicht direkt sagen kann...