AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fragen zu Entwicklung eines TDataSet Descendant
Thema durchsuchen
Ansicht
Themen-Optionen

Fragen zu Entwicklung eines TDataSet Descendant

Ein Thema von anse · begonnen am 9. Sep 2007 · letzter Beitrag vom 14. Sep 2007
Antwort Antwort
Benutzerbild von anse
anse

Registriert seit: 30. Okt 2006
Ort: Neuenkirchen
195 Beiträge
 
Delphi 11 Alexandria
 
#1

Fragen zu Entwicklung eines TDataSet Descendant

  Alt 9. Sep 2007, 17:16
Datenbank: MySQL • Zugriff über: TDataSet
Ich möchte einen simplen Descendant / Abkömmling von TDataset für MySQL entwickeln. Ziel ist es diese Komponente mit den bekannten visuellen DB-Komponenten wie z.B. TDBGrid, TDBMemo etc. nutzen zu können. Im Netz findet man so eine Komponente nur in der ZeosLib (TZQuery). Die ist aber leider alles andere als simpel, schlank und fehlerfrei. Wenn diese Komponente denn mal fertig ist, wird sie auf jeden Fall OpenSource Na jedenfalls habe ich dazu bisher 2 Komponenten halb fertig:

Delphi-Quellcode:
TMySQLConnection = class(TObject)
TMySQLQuery = class(TDataSet)
Die TMySQLConnection wird von TMySQLQuery als Property verwendet und kümmert sich um den Verbindungskram, was bereits wunderbar läuft (mithilfe der mysql.pas von Matthias Fichtner).

Die TMySQLQuery enthält bereits grundlegende Eigenschaften und soll am Ende ähnlich wie ein TQuery zu benutzen sein:

Delphi-Quellcode:
TMySQLQuery = class(TDataSet)
    private
      FSQL: TStrings;
      FConnection: TMySQLConnection;
      FRowsAffected: Int64;
      procedure SetQuery(Value: TStrings);
      procedure SetConnection(Value: TMySQLConnection);
    protected
      function GetConnection: TMySQLConnection;
    public
      constructor Create(AOwner: TComponent); override;
      procedure ExecSQL;
      property RowsAffected: Int64 read FRowsAffected;
    published
      property SQL: TStrings read FSQL write SetQuery;
      property Connection: TMySQLConnection read FConnection write SetConnection;
  end;
Das ist alles was bisher funktioniert.

Jetzt fehlt mir bei TMySQLQuery das Wissen, um die Schnittstelle zu TDataSource zu implementieren. Der Compiler nennt mir immerhin 6 abstrakte Methoden, die ich noch zu überschreiben habe:
Zitat:
W1020 constructing instance of 'TMySQLQuery' containing abstract method 'TDataSet.GetRecord'
W1020 constructing instance of 'TMySQLQuery' containing abstract method 'TDataSet.InternalClose'
W1020 constructing instance of 'TMySQLQuery' containing abstract method 'TDataSet.InternalHandleException'
W1020 constructing instance of 'TMySQLQuery' containing abstract method 'TDataSet.InternalInitFieldDefs'
W1020 constructing instance of 'TMySQLQuery' containing abstract method 'TDataSet.InternalOpen'
W1020 constructing instance of 'TMySQLQuery' containing abstract method 'TDataSet.IsCursorOpen'
Ich habe mir die entsprechenden Methoden in TBDEDataSet (TQuery) und TZAbstractRODataset (ZeosLib) angesehen und verstehe nur Bahnhof.

Kennt jemand FAQs, Starthilfen oder sonstwas mit denen ich mich in dieses Thema "reinlesen" kann?
Ansgar Becker
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: Fragen zu Entwicklung eines TDataSet Descendant

  Alt 10. Sep 2007, 05:35
Gibt Dir das hier nicht selber zu denken :

Zitat von anse:
Ich möchte einen simplen Descendant / Abkömmling von TDataset für MySQL entwickeln.
Zitat von anse:
Die ist aber leider alles andere als simpel, schlank und fehlerfrei. Wenn diese Komponente denn mal fertig ist, wird sie auf jeden Fall OpenSource
in 2050 unter Hyper-Vista XXL, oder was ?

Zitat von anse:
Jetzt fehlt mir bei TMySQLQuery das Wissen, um die Schnittstelle zu TDataSource zu implementieren.
Zitat von anse:
Ich habe mir die entsprechenden Methoden in TBDEDataSet (TQuery) und TZAbstractRODataset (ZeosLib) angesehen und verstehe nur Bahnhof.
Warum sind die Personal-Versionen immer ohne DB-Komponenten ? Oder die Turbos nur mit BDE oder sonstigem halberzigem Kram zu haben (nicht mal IBX) ? Warum gibt es keine kostenlosen vernünftigen kostenlosen DB-Komponenten ? Zeos sind vielleicht kostenlos, aber wer benutzt denn die vernünftig ?

Da das aber wohl alles egal ist 8) : Stichwort ist TDataLink -> F1. Baue damit alles selber zusammen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Fragen zu Entwicklung eines TDataSet Descendant

  Alt 10. Sep 2007, 07:35
Zitat von anse:
Kennt jemand FAQs, Starthilfen oder sonstwas mit denen ich mich in dieses Thema "reinlesen" kann?
Vielleicht hilft dir das.

Uli.
Uli Gerhardt
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: Fragen zu Entwicklung eines TDataSet Descendant

  Alt 10. Sep 2007, 23:22
Ging unter : Marco Cantu kann dir sicher helfen. Der hat auch das mit dem Datalink gesagt. Glaube 50 Seiten beschäftigen sich mit den Grundlagen. Dann kommen noch mehrere hundert dazu. Die insgesamt 1000 englischen Seiten für 45 EUR sind durchaus zu empfehlen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von anse
anse

Registriert seit: 30. Okt 2006
Ort: Neuenkirchen
195 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Fragen zu Entwicklung eines TDataSet Descendant

  Alt 11. Sep 2007, 09:04
Vielen Dank für die wertvollen Tips. Der Artikel von GExperts zu "Custom Datasets" ist sehr gut. Habe noch einen weiteren Artikel gefunden, der etwas weniger informativ ist, dafür aber den ersten um ein paar Details ergänzt: Create your own Custom Dataset.

Beide Artikel gehen auf die Implementierung der Prozeduren ein, die man in einer TDataSet-Ableitung überschreiben muß.

Und wie wahr:
Zitat von GExperts:
Many programmers are turned off by having to manipulate pointers and move memory
Ansgar Becker
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Fragen zu Entwicklung eines TDataSet Descendant

  Alt 11. Sep 2007, 09:17
Zitat von anse:
Und wie wahr:
Zitat von GExperts:
Many programmers are turned off by having to manipulate pointers and move memory
Das ist doch das einfachste am Programmieren. Erinnert mich etwas an das Rechnen mit diesen bunten Holzstäbchen in der Grundschule.


http://www.siscompar.com/loja/images...ire%203057.JPG
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von anse
anse

Registriert seit: 30. Okt 2006
Ort: Neuenkirchen
195 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Fragen zu Entwicklung eines TDataSet Descendant

  Alt 14. Sep 2007, 09:38
Der erste Schritt und mehr ist bereits getan - habe das Grundgerüst inklusive vieler Methoden bereits lauffähig. Bei Interesse siehe hier:
http://fisheye.heidisql.com/trunk/extra/mysql_dataset

Vor allem die TMySQLConnection funktioniert schon ganz passabel. Außer das Herstellen einer normalen Verbindung kann sie bereits:
  • Versions-abhängige Server-Features in einem Set bereitstellen, um zu vermeiden, daß die Client-Anwenung Sachen machen muß wie
    if Connection.ServerVersion >= 40001 then ... else ... Stattdessen macht man einfach
    if cpTruncateTable in Connection.Capabilities then ... else ...
  • Escaping von Strings mithilfe von mysql_real_escape_string
  • Properties wie ThreadId, CharacterSet, LastError sind auch drin.

Die mysql_api.pas habe ich aus Teilen der mysql.pas von Matthias Fichtner und des Pendants in der ZeosLib zusammengebastelt, sodaß diese jetzt auch auf dem aktuellen Stand für die 5er MySQL ist.

Nur mit dem Holzstäbchen verschieben für die internen Methoden der TMySQLQuery(TDataSet) tue ich mich echt schwer - genauer gesagt mit den Methoden GetFieldData, SetFieldData, GetRecordSize u.ä. . Wird also noch seine Zeit brauchen.

Falls natürlich jemand Interesse hat, an dieser OpenSource Komponente mitzuarbeiten, der ist herzlich eingeladen
Ansgar Becker
  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 02:02 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