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
Benutzerbild von paule32.jk
paule32.jk

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

AW: was ist der Sinn von Templates/Generics ?

  Alt 8. Okt 2024, 14:44
Delphi-Quellcode:
type
    QChar = class
    protected
        function getOrigin: uint64;
    public
        constructor Create; overload;
        ... // alles was nicht mit T zu tun hat
    end;

    QChar<T> = class(QChar)
      ... // alles was mit T zu tun hat
    end;
das sieht sehr gut aus !

Übrigens: das Free innerhalb des Create ist etwas irritierend.
das Free ist von mir dazu gedacht, den Speicher freizugeben, wenn bei der Überprüfung der Pointer nil ergibt.
Man könnte das auch auslagern. Aber ich dachte mir, da der Code in einer DLL liegt, das auslösen einer Exception nicht so dolle erscheinen mag.

das ganze kann auch hier eingesehen werden.
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet

Geändert von paule32.jk ( 8. Okt 2024 um 15:58 Uhr) Grund: Code-Abschnitt gelöscht
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: was ist der Sinn von Templates/Generics ?

  Alt 8. Okt 2024, 15:25
Ein Class.Create Constructor gibt per Definition IMMER das Objekt zurück und wenn nicht, dann wird ordnungsgemäß eine Exception geworfen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: was ist der Sinn von Templates/Generics ?

  Alt 8. Okt 2024, 15: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.629 Beiträge
 
Delphi 12 Athens
 
#4

AW: was ist der Sinn von Templates/Generics ?

  Alt 8. Okt 2024, 15: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
 
#5

AW: was ist der Sinn von Templates/Generics ?

  Alt 8. Okt 2024, 16: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

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

AW: was ist der Sinn von Templates/Generics ?

  Alt 9. Okt 2024, 09: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
 
#7

AW: was ist der Sinn von Templates/Generics ?

  Alt 9. Okt 2024, 12: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
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 00:57 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