AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamisches Array: Terminierung auf 1

Ein Thema von Garfield · begonnen am 26. Jun 2005 · letzter Beitrag vom 26. Jun 2005
Antwort Antwort
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#1

Dynamisches Array: Terminierung auf 1

  Alt 26. Jun 2005, 13:58
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.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Dynamisches Array: Terminierung auf 1

  Alt 26. Jun 2005, 14:22
Das geht AFAIK mit dynamischen Arrays einfach nicht, hättest du halt gleich normgemäß nullterminiert angefangen . Aber du könntest das ObjectList-Template von alcaeus nehmen und den Getter und Setter von Items ändern, sodass du mit 1 terminiert darauf zugreifen kannst. Da Items default ist, sollte sich wenig Code ändern.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Dynamisches Array: Terminierung auf 1

  Alt 26. Jun 2005, 14:26
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:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#4

Re: Dynamisches Array: Terminierung auf 1

  Alt 26. Jun 2005, 15:17
Statt alles auf Nullterminierung umzustellen, könntest du auch einfach das nullte Element nicht benutzen und das dyn. Array ein Element größer machen
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Dynamisches Array: Terminierung auf 1

  Alt 26. Jun 2005, 17:53
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.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz