![]() |
AW: Vorsicht! statisches Array mit Startindex>0
Zitat:
Delphi-Quellcode:
wohl eher angebracht. Wobei ich ein [1..255] bevorzuge, weil dann der Index synchron laufen kann.
TB : Array [0..254] of Ansichar;
Gruß K-H |
AW: Vorsicht! statisches Array mit Startindex>0
Ich habe noch nicht einmal eine ungefähre Ahnung was euer Code machen soll, aber ich bin mir sicher etwas Assembler würde ihm noch den letzten Schliff verleihen.
|
AW: Vorsicht! statisches Array mit Startindex>0
Zitat:
Und rate mal, was passiert, wenn du mal auf einen NextGen-Compiler triffst. > String-Indize beginnen dort bei 0 Bzw. die neuen String-Helper indizieren immer mit 0 beginnend. Viele Dinge wurden um 2006 durch die FastCodeLibrary ersetzet. Wenn da auch Move dabei war (so wie z.B. die Move's im FastMM), dann ist das schon optimiert und kopiert auch schonmal mit 4 bis 16 Bytes pro Loop. Assembler ist nicht immer besser, vorallem wenn man sich selber nicht mit den Cache- und Pfadvorhersagemechianismen der "aktuellen" Prozeduren auskennt. |
AW: Vorsicht! statisches Array mit Startindex>0
Zitat:
Gruß K-H |
AW: Vorsicht! statisches Array mit Startindex>0
Zitat:
Statt Flexibilität muss man halt den Quellcode (nachdem er von Pascal 1 (?) bis XE8 (WinX/OSX) ohne änderung funktionieren würde) umstellen. |
AW: Vorsicht! statisches Array mit Startindex>0
Zitat:
Also ich bin froh, dass man ^ mittlerweile in vielen Fällen (z.B. Zugriff auf Felder eines Record-Pointers) weglassen kann. Zitat:
Delphi-Quellcode:
So funktioniert es mit statischen und dynamischen Arrays, unabhängig vom Startindex. Nur nicht mit ShortString, weil Low() hier eben 0 liefert und damit nach dem Move #11'CoolerTex' in A und B steht. Besoders schön / leserlich ist solcher Code natürlich auch nicht. ;)
uses
System.Math; type TA = Array of AnsiChar; TB = Array [0 .. 200] of AnsiChar; var A: TA; B: TB; S: ShortString; begin S := 'Cooler Text'; SetLength(A, 201); Move(S[Low(S)], A[Low(A)], Min(Length(S) * SizeOf(S[Low(S)]), Length(A) * SizeOf(A[Low(A)]))); Move(S[Low(S)], B[Low(B)], Min(Length(S) * SizeOf(S[Low(S)]), Length(B) * SizeOf(B[Low(B)]))); end; |
AW: Vorsicht! statisches Array mit Startindex>0
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 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