![]() |
AW: Alternative für String Assign
Man nimmt einen Pointer mit GetMem oder ggf. auch ein Byte Array.
|
AW: Alternative für String Assign
Zitat:
Delphi-Quellcode:
function TAnimatePng.FGet(hFile: THandle; var sBuffer: TBytes): LongInt; // <===
var ByttesReaded: DWORD; LenBuf: DWORD; begin Result := 0; if hFile <> 0 then begin ByttesReaded := 0; LenBuf := Length(sBuffer); if LenBuf <> 0 then begin if ReadFile(hFile, sBuffer[0], LenBuf, ByttesReaded, 0) = false then // <=== Result := GetLastError(); end; end; end; |
AW: Alternative für String Assign
Zitat:
Belassen? ok sollte gehn ist ja ein Array gruss |
AW: Alternative für String Assign
Zitat:
Delphi-Quellcode:
var
s: string; b: TBytes; begin SetLength(s, 10); // 20 Bytes SetLength(b, 10); // 10 Bytes; |
AW: Alternative für String Assign
Zitat:
gruss |
AW: Alternative für String Assign
yep jetzt klappt das gut mit MoveMemory war gar nichts vorher.
Delphi-Quellcode:
MoveMemory(pGlobalBuffer, @sBuffer[0], BufferSize);
gruss |
AW: Alternative für String Assign
Ich hoffe mal das mir das keine neuen Probleme einhandelt.
Eigentlich wollte ich mit SetFilePointerEx und LARGE_INTEGER arbeiten aber das Delphi verbietet mir das weil diese Funktion nicht existiert. Jetzt musste ich deshalb auf LongInt ausweichen. Ob das später Problem bereitet ? Das wollte ich versuchen
Delphi-Quellcode:
muss aber nun darauf zurückgreifen.
var
li: LARGE_INTEGER; begin li.LowPart := PosByte;
Delphi-Quellcode:
gruss
var
li: LongInt; begin li := PosByte; |
AW: Alternative für String Assign
Du kannst die LARGE_INTEGER ja selbst definieren.
Es macht halt Probleme wenn irgendeine API einen 64-Bit-Wert erwartet und nur 32-Bit ankommen. Ansonsten sollte es keine Probleme machen solange du keine PNGs lädst die > 4GB sind. Gibt es einen Grund für SetFilePointer etc? Du könntest einfach nen TFileStream benutzen. Ist ein ganzes Stück angenehmer als direkt die API Funktionen zu benutzen. |
AW: Alternative für String Assign
Delphi-Quellcode:
ist ein Record. Versuch doch
LARGE_INTEGER
Delphi-Quellcode:
, das entspriche
TLargeInteger
Delphi-Quellcode:
.
Int64
|
AW: Alternative für String Assign
Zitat:
Delphi-Quellcode:
PLargeInteger = ^TLargeInteger;
_LARGE_INTEGER = record case Integer of 0: ( LowPart: DWORD; HighPart: Longint); 1: ( QuadPart: LONGLONG); end; {$EXTERNALSYM _LARGE_INTEGER} {$NODEFINE TLargeInteger} TLargeInteger = Int64; LARGE_INTEGER = _LARGE_INTEGER; {$EXTERNALSYM LARGE_INTEGER} |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz