AGB  ·  Datenschutz  ·  Impressum  







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

Array SCHNELL auf Null setzen

Ein Thema von bernhard_LA · begonnen am 20. Okt 2014 · letzter Beitrag vom 21. Okt 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

AW: Array SCHNELL auf Null setzen

  Alt 21. Okt 2014, 08:42
Was soll daran doof sein? Ein gleichförmiges zweidimensionales Array ist numal kein eindimensionales Array, obwohl man es als solches implementieren kann.
Und dann auch nur so weit, wie ich sichergehen kann, dass man nicht noch nachträglich eine Dimension verändert (dynamisch und so...)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#2

AW: Array SCHNELL auf Null setzen

  Alt 21. Okt 2014, 09:16
@Stevie:
Vielleicht war meine Formulierung zu hart. Ich hätte auch sagen können: Leider ist der Compiler nicht so schlau ein gleichförmiges mehrdimensionales dynamisches Array anders zu behandeln als ein ungleichförmiges mehrdimensionales dynamisches Array. Ohne dies jemals zu prüfen, ging ich bisher davon aus, dass die Sequenz
Code:
a: array of array of Integer;
etwas anderes wäre als
Code:
a: array of TIntegerDynArray;
Ich habe jetzt gelernt: Sofern die Darstellung des Arrays im Speicher eine Rolle spielt, muss der Programmierer ein gleichförmiges mehrdimensionales dynamisches Array selbst verwalten (wie in #12 gezeigt).
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.624 Beiträge
 
Delphi 12 Athens
 
#3

AW: Array SCHNELL auf Null setzen

  Alt 21. Okt 2014, 09:59
Also wie sieht denn nun der Code aus, um ein array of array of integer zu füllen?
Wie schon erwähnt, ruft SetLength intern DynArraySetLength auf. Diese Methode ist rekursiv und arbeitet auch mit mehrdimensionalen Arrays. Ein arr: array of array of Integer wird also mit einem Aufruf von SetLength(arr, 10, 20) ebenso mit Nullen initialisiert wie ein eindimensionales.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming

Geändert von Uwe Raabe (21. Okt 2014 um 10:01 Uhr) Grund: falsches Quote
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Array SCHNELL auf Null setzen

  Alt 21. Okt 2014, 10:00
Hallo,

also ich verlasse mich nicht auf automatisches Setzen des Compilers.
Da wir Datenbankprogramme entwickeln,
spielt der Overhead des Initialisierens hier überhaupt keine Rolle.

Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.624 Beiträge
 
Delphi 12 Athens
 
#5

AW: Array SCHNELL auf Null setzen

  Alt 21. Okt 2014, 10:04
also ich verlasse mich nicht auf automatisches Setzen des Compilers.
Ist ja nicht direkt der Compiler, sondern die entsprechende Prozedur der RTL. Aber wie du meinst.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Array SCHNELL auf Null setzen

  Alt 21. Okt 2014, 11:27
Hallo,

also ich verlasse mich nicht auf automatisches Setzen des Compilers.
Da kann ich nur zustimmen, auch wenn ich das gleiche wie ... mache, dann steht's in meinen Sourcen, in 5 Jahren weiß doch keiner mehr ob XE2 dreidimensionale arrays mit 0 initialisiert hat oder ob nicht.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Array SCHNELL auf Null setzen

  Alt 21. Okt 2014, 11:52
Hallo,

also ich verlasse mich nicht auf automatisches Setzen des Compilers.
Da kann ich nur zustimmen, auch wenn ich das gleiche wie ... mache, dann steht's in meinen Sourcen, in 5 Jahren weiß doch keiner mehr ob XE2 dreidimensionale arrays mit 0 initialisiert hat oder ob nicht.
Dazu sag ich nur cargo cult programming.

Das sind so dermaßen grundlegende Dinge in der RTL, die nicht einfach in irgendeiner Version verändert werden.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.624 Beiträge
 
Delphi 12 Athens
 
#8

AW: Array SCHNELL auf Null setzen

  Alt 21. Okt 2014, 12:04
Genau das hatte ich auch schon auf der Zunge
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Array SCHNELL auf Null setzen

  Alt 21. Okt 2014, 12:10
Hallo,

also ich verlasse mich nicht auf automatisches Setzen des Compilers.
Da kann ich nur zustimmen, auch wenn ich das gleiche wie ... mache, dann steht's in meinen Sourcen, in 5 Jahren weiß doch keiner mehr ob XE2 dreidimensionale arrays mit 0 initialisiert hat oder ob nicht.
Dazu sag ich nur cargo cult programming.

Das sind so dermaßen grundlegende Dinge in der RTL, die nicht einfach in irgendeiner Version verändert werden.
Dann ist Dein Code aber zunächst nur EmbaDelphi-tauglich. Bevor Du Dich nicht eingearbeitet hast kannst Du Dir nicht sicher sein, daß die 1001 anderen Delphi/Pascal-Entwicklungsumgebungen genauso arbeiten. Ein fillchar() zeigt dem Sourcecodeleser übrigens eindeutig, das da etwas zu initialisieren ist, fehlt dies muß er sich erst einmal schlau machen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: Array SCHNELL auf Null setzen

  Alt 21. Okt 2014, 12:35
Dann ist Dein Code aber zunächst nur EmbaDelphi-tauglich. Bevor Du Dich nicht eingearbeitet hast kannst Du Dir nicht sicher sein, daß die 1001 anderen Delphi/Pascal-Entwicklungsumgebungen genauso arbeiten. Ein fillchar() zeigt dem Sourcecodeleser übrigens eindeutig, das da etwas zu initialisieren ist, fehlt dies muß er sich erst einmal schlau machen.H
Joa, is ja auch die Delphi-Praxis hier und nicht die "1001 Pascal-Praxis".
Wenn du mir die eine andere Pascal Implementierung zeigst, die generics, closures und enhanced rtti kann,
dann können wir nochmal über meinen derzeit nur Embarcadero kompatiblen Code sprechen
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:16 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