AGB  ·  Datenschutz  ·  Impressum  







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

Record helper für statische Arrays

Ein Thema von Dennis07 · begonnen am 5. Mär 2020 · letzter Beitrag vom 5. Nov 2022
Antwort Antwort
freimatz

Registriert seit: 20. Mai 2010
1.513 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Record helper für statische Arrays

  Alt 5. Mär 2020, 14:58
"Zumal der Mehraufwand hier wohl wirklich minimal gewesen wäre" - das sagen meine Kunden auch immer
Ich kann mir vorstellen dass es doch etwas mehr Aufwand ist. Ein record hat per see schon mehrere unterschiedliche Elemente, da noch etwas hinzufügen ist einfacher als bei etwas, das nur aus lauter gleichen Elementen besteht. Aber das ist nur eine Vermutung, ich kenne die Internas nicht.

"Naja, wozu mal Helper nunmal "braucht". Als Erweiterung für Typen, die man nicht ableiten will oder kann." - zu kann fallen mir alle Typen aus der RTL, VCL u.a. ein. Statische arrays sind mit da noch nicht untergekommen.
Selber haben wir öffentliche statische arrays nur bei Vektoren und Matrizen. Das gilt bei uns auch schon veraltet, man sollte den Record nehmen der das kapselt. So hat das ja auch himitsu vorgeschlagen.
In anderen Fällen würde ich eh immer eine Klasse drum rum bauen.
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
496 Beiträge
 
Delphi 12 Athens
 
#2

AW: Record helper für statische Arrays

  Alt 5. Mär 2020, 18:39
Ein record hat per see schon mehrere unterschiedliche Elemente, da noch etwas hinzufügen ist einfacher als bei etwas, das nur aus lauter gleichen Elementen besteht. Aber das ist nur eine Vermutung, ich kenne die Internas nicht.
Naja, aber erstens haben Strings, Zahlen und dynamische Arrays auch keine Member, und zweitens sind das ja keine "echten" Member, sondern nur globale Routinen mit einem entsprechenden Parameter als "Self". RTTI und vererbung gibt es bei Helpern ja gar nicht. Insofern bezweifle ich durchaus, dass es tatsächlich noch mal deutlich mehr Arbeit gewesen wäre, das zu implementieren. Mir erscheint es eher wie eine willkürliche Einschränkung zu sein, als einen echten technischen Hintergrund zu haben.

zu kann fallen mir alle Typen aus der RTL, VCL u.a. ein. Statische arrays sind mit da noch nicht untergekommen.
Selber haben wir öffentliche statische arrays nur bei Vektoren und Matrizen. Das gilt bei uns auch schon veraltet, man sollte den Record nehmen der das kapselt. So hat das ja auch himitsu vorgeschlagen.
In anderen Fällen würde ich eh immer eine Klasse drum rum bauen.
Joa, könnt ihr ja machen wie ihr wollt. Aber manchmal nimmt man halt Arrays, weil Records halt auch ihre Nachteile haben. Besonders wenn es darum geht, dass Record-Felder ja als Eigenschaften und Parameter ja Readonly sind.

Wobei es so bei statischen Arrays und Records davon abhängt, was für Typen drin sind.
Strings und Interfaces und schon werden dieses Records/Arrays auch initialisiert und finalisiert (bzw. sie müssen es, sonst Preng und/oder Speicherlecks)
Joa eben, deshalb bringt es ja nichts...
Dennis

Geändert von Dennis07 ( 5. Mär 2020 um 23:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.531 Beiträge
 
Delphi 12 Athens
 
#3

AW: Record helper für statische Arrays

  Alt 5. Mär 2020, 21:29
Vererbung gibt es bei Helpern.

Zum Glück, denn sonst wären Helper zu nichts zu gebrauchen, wenn man selber Typen erweitern will und dann mit den vordefinierten Helpern kollidiert.
Ich hoffe aber noch, dass der Entwickler irgendwann mal den gravierenden Bug behebt, wonach immer nur der letzte Helper nutzbar ist, denn Helper aus Fremdkomponenten können nicht voneinander erben, vor allem nicht firemübergreifend.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Record helper für statische Arrays

  Alt 5. Mär 2020, 22:05
Vererbung gibt es bei Helpern.
Nur bei class helper for, nicht bei record helper for.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.531 Beiträge
 
Delphi 12 Athens
 
#5

AW: Record helper für statische Arrays

  Alt 5. Mär 2020, 22:23
Na das ist dann ja richtig doof.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
496 Beiträge
 
Delphi 12 Athens
 
#6

AW: Record helper für statische Arrays

  Alt 6. Mär 2020, 10:20
Ich weiß im Augenblick nicht ganz, was ihr mit "Vererbung" hier meint. Denn Class Helper lassen sich ja nicht ableiten.
Dennis
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Record helper für statische Arrays

  Alt 6. Mär 2020, 10:25
Es zählt immer nur 1 Helper. Wenn du 2 Helper für den gleichen Typen machst gilt immer nur der neuste (bzw. am "nächsten" deklarierte)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Record helper für statische Arrays

  Alt 6. Mär 2020, 11:56
Ich weiß im Augenblick nicht ganz, was ihr mit "Vererbung" hier meint. Denn Class Helper lassen sich ja nicht ableiten.
Doch!

Hier zwei Beispiele:
Delphi-Quellcode:
program Project624;

{$APPTYPE CONSOLE}

uses
  FMX.Types3D;

type
  TMyContexHelper = class helper (TContextHelper) for TContext3D
  public
    procedure Hurz;
  end;

procedure TMyContexHelper.Hurz;
begin
end;

var
  context: TContext3D;
begin
  context.FillCube(NullPoint3D, NullPoint3D, 0, 0); // deklariert in TContextHelper
  context.Hurz;
end.
Delphi-Quellcode:
program Project639;

{$APPTYPE CONSOLE}

uses
  System.Net.HttpClient;

type
  TMyHelper = class helper (THTTPClientHelper) for THTTPClient
  public
    procedure Hurz;
  end;

procedure TMyHelper.Hurz;
begin
end;

var
  Client: THTTPClient;
begin
  client.UseDefaultCredentials := True; // deklariert in THTTPClientHelper
  client.Hurz;
end.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Jost Riedel

Registriert seit: 25. Mär 2020
5 Beiträge
 
#9

AW: Record helper für statische Arrays

  Alt 25. Mär 2020, 18:55
Wenn man allerdings das statische Array in einen record einhüllt, dann braucht keinen record helper mehr:

type
ByteArray10 = record
x: array[0..10] of Byte;
procedure DoWhatever;
end;

procedure ByteArray10.DoWhatever;
begin
end;

Es ist schon spaßig: Für records braucht man keine "record helper", einen helper für einen enumerierten Typ, ein Set, usw. "record helper" zu nennen ist schon etwas irreführend.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.531 Beiträge
 
Delphi 12 Athens
 
#10

AW: Record helper für statische Arrays

  Alt 25. Mär 2020, 20:33
Jupp, siehe Antwort #3.
Aber dann braucht man den Helper nicht unbedingt und kann es auch direkt in den Record reintun.
Wenn man einfach nur den "grundlegenden" Unterschied von Record und Klasse nimmt, dann wäre die Sache etwas klarer.
* CLASS für Klassen, also alles mit impliziten Pointern
* RECORD für alle Records und native Typen ohne Pointer, wo die Daten direkt in der Variable stecken (ja, auch der Pointer selbst ist ein nativer Typ)

Wobei hier der STRING und dynamische Arrays demnach ja eigentlich einen Class-Helper benötigen würden.
Dann vielleicht CLASS Helper eben für Klassen und Interfaces, welche mit einem Contructor erstellt werden müssen, und RECORD für alles Andere.

Gut, Helper ist Helper und man hätte eigentlich keine verwirrend unterschiedlichen Namen benötigt.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Mär 2020 um 20:37 Uhr)
  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 01: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-2025 by Thomas Breitkreuz