![]() |
Dynamisches Array: Terminierung auf 1
Ich hatte vor einiger Zeit ein Programm in Delphi 3 Professional begonnen und dann in Delphi 7 Personal weitergeführt. Darin verwende ich ein statisches Array, welches ich damals der Einfachheit halber mit 1 terminiert hatte. Nun möchte ich daraus ein dynamisches Array machen. Dynamische Arrays sind jedoch nullterminiert. Das Umstellen auf die andere Terminierung ist sehr aufwändig und trotz mehrerer Stunden Arbeit erhalte ich immer wieder neue Fehlermeldungen. Deshalb würde ich gern die Terminierung von 0 auf 1 ändern. Leider habe ich dazu nichts gefunden.
|
Re: Dynamisches Array: Terminierung auf 1
Das geht AFAIK mit dynamischen Arrays einfach nicht, hättest du halt gleich normgemäß nullterminiert angefangen :wink: . Aber du könntest das
![]() |
Re: Dynamisches Array: Terminierung auf 1
Hallo Garfield,
du solltest deine array Addressierung grundsätzlich auf die Verwendung von High() und Low() umstellen, dann hast du nie wieder Probleme:
Delphi-Quellcode:
Grüße vom marabu
var
sa: array [1..10] of integer; da: array of integer; i, j, iValue: integer; begin SetLength(da, 10); iValue := 0; for i := Low(sa) to High(sa) do begin Inc(iValue); sa[i] := iValue; end; j := Low(sa); for i := Low(da) to High(da) do begin da[i] := sa[j]; Inc(j); end; end; |
Re: Dynamisches Array: Terminierung auf 1
Statt alles auf Nullterminierung umzustellen, könntest du auch einfach das nullte Element nicht benutzen und das dyn. Array ein Element größer machen
|
Re: Dynamisches Array: Terminierung auf 1
Als ich mit dem Programm angefangen habe, kam mir die Terminierung mit 1 sehr entgegen und auf älteren Delphi-Seiten sieht man sie auch noch öfter. Nachdem ich den Text teilweise geändert hatte, kam ich auch auf die Idee von Phistev. Doch dann dachte ich, man könnte die Terminierung vielleicht elegant mit einem Befehl wie SetIndex () oder ähnliches ändern. Allerdings fand ich in der Hilfe nichts dazu.
Nun scheint mir diese Vatinate die einfachste zu sein wenn ich nicht den Quelltext Zeile für Zeile durchsuchen und die Argumente für das Array um 1 reduzieren will. Auf jeden Fall vielen Dank für Eure Hilfe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 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