AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein was ist der Sinn von Templates/Generics ?
Thema durchsuchen
Ansicht
Themen-Optionen

was ist der Sinn von Templates/Generics ?

Ein Thema von paule32.jk · begonnen am 7. Okt 2024 · letzter Beitrag vom 9. Okt 2024
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von himitsu
himitsu
Online

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

AW: was ist der Sinn von Templates/Generics ?

  Alt 8. Okt 2024, 16:25
Ein Class.Create Constructor gibt per Definition IMMER das Objekt zurück und wenn nicht, dann wird ordnungsgemäß eine Exception geworfen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#22

AW: was ist der Sinn von Templates/Generics ?

  Alt 8. Okt 2024, 16:44
Und weshalb werden hier immer wieder unaufgefordert solche Code-Monster gepostet, die doch kein Mensch liest? TL;DR
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: was ist der Sinn von Templates/Generics ?

  Alt 8. Okt 2024, 16:46
Und weshalb werden hier immer wieder unaufgefordert solche Code-Monster gepostet, die doch kein Mensch liest? TL;DR
In der Tat! Dafür macht sich ein Dateianhang, den man in der IDE öffnen kann, deutlich besser.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: was ist der Sinn von Templates/Generics ?

  Alt 8. Okt 2024, 17:05
in dem Zusammenhang mit Templates (jetzt in GNU C++) ...
Code:
class TObject {
public:
    virtual std::string ClassName() const;
    virtual ~TObject();
};

template <typename T>
class QChar: public TObject {
public:
    // constructor
    QChar(T);
};

extern "C" {
DLL_EXPORT bool
isBlank_QChar(uint64_t addr) {
    auto * objptr = reinterpret_cast<qvc::QChar*>(addr);
    check_pointer(addr, reinterpret_cast<uint64_t>(objptr));
   
    std::cout << "objptr = " << objptr->ClassName() << std::endl;
   
    if (objptr->isBlank())
    return true;
    return false;
}
};
in der Funktion oben caste ich einen bereits erstellten Klassen-Pointer (vieleicht nicht die beste Lösung, aber das sei erstmal dahingestellt).
Die Frage ist aber nun: wie kann ich in der Zeile:
Code:
auto * objptr = reinterpret_cast<qvc::QChar*>(addr);
den Typen erhalten ?
muss ich dazu den Typen während der Initialization speichern, um ihn dann and <qvc::QChar*> angeben zu können ?
wie macht man das ?
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
Blup
Online

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#25

AW: was ist der Sinn von Templates/Generics ?

  Alt 9. Okt 2024, 10:31
Free im Constructor ist nicht zulässig, da dann ein Zeiger auf die nicht mehr existierende Objectinstance zurückgegeben wird.
Die einzige Möglichkeit den Constructor abzubrechen ist eine Exception.

Ich habe noch nicht verstanden was du eigentlich erreichen willst.
Vieleicht erklärst du das ausführlicher. Wahrscheinlich ist das sogar ein neues Thema.

Leitet man von einem Generic eine konkrete Klasse ab, bestimmt man damit Classname selbst.
Ist ein Object erstellt, kann man auf Object.ClassName und Object.ClassType zugreifen.

Erstellt man ein Object direkt von einem Generic, leitet Delphi selbständig eine konkrete Klasse ab.
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#26

AW: was ist der Sinn von Templates/Generics ?

  Alt 9. Okt 2024, 13:37
ich habe das ganze schon fast gelöst, das Projekt kann in meinen letzten Link betrachtet werden.

Das Projekt, an dem ich gerade sitze ist folgendes:
- FPC mit GNU C++ zu kombinieren, so dass dann:
- die FPC VCL (die der Delphi VCL entspricht) mit den GNU C++ zu verknüpfen.
so hat man dann einheitliche Funktionen, die sowohl in FPC und GNU C++ verwendet werden können.
Erst wollte ich das Qt-Framework, das unter GNU C++ geschrieben wurde in FPC zugänglich machen.
Aber da gibt es schon anstrengungen, die mir aber nicht gefallen, da diese vorwiegend prozedural
gehalten sind - mein Ansatz aber das Klassen-Model nutzen soll, so dass man dann nicht mehr:
ptr := Create_QWidget();

hat, sondern:
ptr := QWidget.Create;

was für mich eindeutig komfortabler ist.

Da ich nun verschiedene Datentypen unterstützen würde, habe ich erstmal normale klassische OOP
angewendet. Jetzt aber auf den aufsteigenden Ast bin, auch in die tiefen der Template-Verarbeitung
zu steigen.

Ob das dann zweckmäßig erscheint, sei erstmal dahin gestellt - zumal es für mich auch eine Art Übung
und Lehrzweck dient.

Also seid da nicht emboßt, wenn der Quellcode wie Kraut und Rüben ausschaut - bin halt kein richtiger
Programmierer - also angelernt...
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: was ist der Sinn von Templates/Generics ?

  Alt 9. Okt 2024, 13:46
in Delphi kann man Methoden einer Klasse auch als EXTERNAL deklarieren

und dann als Einzelfunktionen z.B. in einer DLL (Delphi, C+++ oder sonstwas) exporieren, welche von der Delphi-Klasse dann genutzt werden.


Ansonsten einfach einen Record, darin Pointer-Variablen auf Funktionen. (ähnlich dem TMemoryManager in der System-Unit, was auch zwischen Delphi und C++Builder genutzt werden kann)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#28

AW: was ist der Sinn von Templates/Generics ?

  Alt 9. Okt 2024, 14:00
Ansonsten einfach einen Record, darin Pointer-Variablen auf Funktionen. (ähnlich dem TMemoryManager in der System-Unit, was auch zwischen Delphi und C++Builder genutzt werden kann)
das mache ich bereits...

aber ich habe jetzt festgestellt, das ich ALLE ctor's wegschneiden kann, und durch ein Template ersetzen kann.
Das spart in meiner momentanen Sicht der Weise, an binären Speicherplatz.
Klar, man hat vielleicht einen kleinen Payload - aber der ist, so denke ich, schnell wieder reingeholt.
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#29

AW: was ist der Sinn von Templates/Generics ?

  Alt 9. Okt 2024, 15:40
bei Value: T aber leider nicht bei Value: array of T
also ich habe jetzt folgendes vom Compiler übersetzen können:
Delphi-Quellcode:
constructor QChar<T>.Create(v: Array of T);
var
    i: Integer;
begin
    for i := 0 to High(v) do
    foo := v[i];
end;
irgendwie finde ich das Klasse, was man so machen kann - zumal man auch Code sparrt ...
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: was ist der Sinn von Templates/Generics ?

  Alt 9. Okt 2024, 16:13
Es kann sogar eine teilweise Automatik (Inferenz) genutzt werden, wo der Compiler z.B. anhand der übergebenen Variable das T selbst bestimmt.
Delphi-Quellcode:
MyValue.SetValue<Integer>(MyInt);
MyValue.SetValue(MyInt);
bei Value: T aber leider nicht bei Value: array of T
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 20:52 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