Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage zu zero-based array (https://www.delphipraxis.net/192658-frage-zu-zero-based-array.html)

A.Griffin 9. Mai 2017 09:56

Delphi-Version: 10 Berlin

Frage zu zero-based array
 
Ich habe in der Doku gelesen, dass "array[0..x] of Char" ein zero-based character array erstellt. Was macht aber z.B. "array[0..1] of string"?

DeddyH 9. Mai 2017 09:58

AW: Frage zu zero-based array
 
Das ist ein Zero-based String-Array. Was genau ist denn die Frage?

A.Griffin 9. Mai 2017 10:06

AW: Frage zu zero-based array
 
Ich verstehe den Sinn von zero-based char arrays wegen der Kompatibilität mit c, c++ aber wofür nutzt man den zero-based string arrays?

Der schöne Günther 9. Mai 2017 10:08

AW: Frage zu zero-based array
 
Jeder freie Mensch darf String-Arrays verwenden. Wenn ich eine Textdatei einlese. Dann bietet sich doch ein String-Array an. Warum nicht?

Oder knabberst du am "zero-based"? Es gibt dynamische und statische Arrays. Bei letzteren ist die Größe im Vorhinein festgelegt. Man könnte das Array nicht nur von 0..x sondern von 15..49 zählen lassen. Weshalb man das tun sollte weiß ich allerdings bis heute nicht.

A.Griffin 9. Mai 2017 10:15

AW: Frage zu zero-based array
 
also ist array[0..1] of string gleich wie array[1..2] of string und hat keine besondere Bedeutung? Ja, mir geht es um das zero-based.

uligerhardt 9. Mai 2017 10:16

AW: Frage zu zero-based array
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1370712)
Man könnte das Array nicht nur von 0..x sondern von 15..49 zählen lassen. Weshalb man das tun sollte weiß ich allerdings bis heute nicht.

Hier mal ein heutzutage überflüssiges Beispiel: Eine Umsetztabelle für Groß-/Kleinschreibung könnte mit Ord('A')..Ord('Z') indiziert sein.

uligerhardt 9. Mai 2017 10:19

AW: Frage zu zero-based array
 
Zitat:

Zitat von A.Griffin (Beitrag 1370715)
also ist array[0..1] of string gleich wie array[1..2] of string und hat keine besondere Bedeutung? Ja, mir geht es um das zero-based.

Naja, auf das eine musst du halt mit arr[0] und arr[1] zugreifen, auf das andere mit arr[1] und arr[2].

Delphi-Quellcode:
procedure ZeroBased;
var
  arr: array[0..1] of string;
begin
  arr[0] := 'A';
  arr[1] := 'B';
end;

procedure OneBased;
var
  arr: array[1..2] of string;
begin
  arr[1] := 'A';
  arr[2] := 'B';
end;

p80286 9. Mai 2017 10:34

AW: Frage zu zero-based array
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1370712)
Weshalb man das tun sollte weiß ich allerdings bis heute nicht.

Selbst dokumentierender Code.
Wenn Du Datensätze mit fester Länge hast, dann kannst Du so
Delphi-Quellcode:
var
  f1 : Array [ 1.. 6] of char;
  f2 : Array [ 7..13] of char;
  f4 : Array [14..34] of char;
  f5 : Array [35..60] of char;
ganz gut den Überblick behalten. Nur die entsprechende Länge siehst Du nicht auf den ersten Blick, aber man kann ja nicht alles haben.

Gruß
K-H

Der schöne Günther 9. Mai 2017 10:37

AW: Frage zu zero-based array
 
Zitat:

Zitat von A.Griffin (Beitrag 1370715)
also ist array[0..1] of string gleich wie array[1..2] of string und hat keine besondere Bedeutung? Ja, mir geht es um das zero-based.

Ja. Die C-Interoperabilität ist dadurch nicht gefährdet denn der erzeugte Code ist der gleiche. Wo du bei deinen statischen Arrays anfängst zu zählen ist im Endeffekt nur Delphi-Dekoration, der Compiler macht das gleiche draus.

Uwe Raabe 9. Mai 2017 12:09

AW: Frage zu zero-based array
 
Zitat:

Zitat von uligerhardt (Beitrag 1370716)
Eine Umsetztabelle für Groß-/Kleinschreibung könnte mit Ord('A')..Ord('Z') indiziert sein.

Nun, die würde man vielleicht doch lieber gleich als
Delphi-Quellcode:
array['A'..'Z'] of Char
deklarieren. In Delphi kann man ja jeden Aufzählungstyp als Array-Index verwenden.

Delphi-Quellcode:
type
  TWeekday = (Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag);
  TWorkdays = Montag..Freitag;

type
  TWorkHours = array[TWorkdays] of Integer;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 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