![]() |
Delphi-Version: 5
Struktur > 2Gb
Hallo zusammen,
ich habe eine "uralte" Funktion von D XE übersetzen lassen und bin mit der Meldung "Struktur >2GB" belohnt worden. Ich könnte jetzt einfach ein paar Byte abzwacken, aber "richtig" wäre diese Lösung nicht. Könnt Ihr mir einen (oder mehrere Tips geben wie ich das Problem "ordentlich" lösen kann?
Delphi-Quellcode:
(gerade ist mir aufgefallen, daß das füllen mit Blanks nicht unicode-tauglich ist, bitte ignoriert das)Gruß
procedure copyStr2Ara(const ins:string;pa:pointer;lange:cardinal);
type ta = array [0..maxint-1] of char; var sizeofa:cardinal; tocopy :cardinal; begin sizeofa:=lange*sizeof(char); if sizeofa>0 then begin tocopy:=sizeof(char)*length(ins); if tocopy<=sizeofa then begin if tocopy>0 then move(ins[1],ta(pa^)[0],tocopy); if tocopy<sizeofa then fillchar(ta(pa^)[tocopy],sizeofa-tocopy,' '); end else move(ins[1],ta(pa^)[0],sizeofa); end; end; k-H |
AW: Struktur > 2Gb
Nimm statt Char AnsiChar
|
AW: Struktur > 2Gb
Abgesehn davon, daß der Typ ta nutzlos ist.
Verwende statt
Delphi-Quellcode:
einfach nur
ta(pa^)[0]
Delphi-Quellcode:
oder
pa^
Delphi-Quellcode:
.
PChar(pa)^
(
Delphi-Quellcode:
)
ta = array [0..MaxInt div SizeOf(Char)-1] of char;
Und wenn die Größe egal ist, dann hätte auch
Delphi-Quellcode:
ausgereicht.
ta = array [0..0] of char;
Zusätzlich ist das 0..0 ein Sonderfall, den dieses Array verfügt dann über keine Bereichsprüfung (sollte Dieses in den Projektoptionen aktiviert sein). PS: Ist ![]() |
AW: Struktur > 2Gb
Zitat:
Zitat:
Wenn ich das mit
Delphi-Quellcode:
Erreiche soll's mir recht sein. Ich finde dazu aber nichts in der OH. Kannst Du mir da einen Tip geben?
Array [0..0] of..
Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:25 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-2025 by Thomas Breitkreuz