Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi IBDAC-Demo funktioniert nicht (https://www.delphipraxis.net/128924-ibdac-demo-funktioniert-nicht.html)

globetrotter77 9. Feb 2009 15:36

Datenbank: so weit kommt es nicht • Zugriff über: noch gar nicht

IBDAC-Demo funktioniert nicht
 
Hallo,

ich habe endlich mal Zeit gefunden, IBDAC auszuprobieren.

Besser gesagt: Ausprobieren wäre schön gewesen, stattdessen habe ich das Installationsprogramm runtergeladen, den ganzen Kram installiert und dann versucht, mir mal das Demo-Programm IbDacDemo.bdsproj anzusehen.
Dabei kommt gleich am Anfang der Fehler:
Zitat:

Fehler beim Lesen des Formulars
Klasse TIBCConnection nicht gefunden.
Den Fehler ignorieren oder fortsetzen?
bla bla bla
dto. für
TIBCTransaction
TIBCScript (2x)
TIBCConnectDialog

Beim Übersetzen kommt folgende Fehlermeldung:
Zitat:

Feld IbDacForm.scDrop besitzt keine entsprechende Komponente. Soll die Deklaration entfernt werden?
An der Stelle sage ich natürlich "Nein".
Danach kommen die selben Meldungen für
IbDacForm.scCreate
IbDacForm.IBCTransaction
IbDacForm.IBCConnectDialog
IbDacForm.IBCConnection

Anschließend wird das Programm anstandslos übersetzt, und der Trial-Screen erscheint.

Danach kommt eine "Benachrichtigung über Debugger-Exception"
EAccessViolation bei Adresse ....
Schreiben von Adresse 00000044

Dann meldet sich das Programm.
Dass aber dann nichts geht, ist eigentlich klar!
Weder Connect noch sonst was ...

Hat jemand schon ähnliche Erfahrungen gemacht?
Woran kann das liegen?
Was muss man tun?
Evtl. nur eine Unit in der uses-Klausel vergessen oder falsch geschrieben??

Oder liegt das an speziellen Eigenheiten der Turbo-Explorer-Variante?

mkinzler 9. Feb 2009 16:07

Re: IBDAC-Demo funktioniert nicht
 
Zitat:

Oder liegt das an speziellen Eigenheiten der Turbo-Explorer-Variante?
Ja. Beim TDE muss man die Komponenten manuell erzeugen

DeddyH 9. Feb 2009 16:08

Re: IBDAC-Demo funktioniert nicht
 
In Turbo Delphi Explorer kannst Du keine Komponenten in der IDE installieren. Abhilfe kann es aber schaffen, wenn Du dessen Bibliothekspfad um das Verzeichnis zu den IBDAC-Komponenten erweiterst. Allerdings musst Du die Demo dann immer noch dahingehend umschreiben, dass Du die benötigten Komponenten zur Laufzeit erzeugst.

globetrotter77 9. Feb 2009 16:35

Re: IBDAC-Demo funktioniert nicht
 
Na, toll!
Unter einer Demo verstehe ich eigentlich was anderes!
Dass ich meine Komponenten selber erzeugen muss, weiß ich natürlich, hätte aber gedacht, dass sie für eine Demo schon fertig erzeugt werden.
Den Pfad zu den IBDAC-Komponenten hat die Installationsroutine bereits eingetragen.

Was also tun?

In der Unit steht folgendes:

Delphi-Quellcode:
type
  TIbDacForm = class(TDemoForm)
    IBCConnection: TIBCConnection;
    IBCTransaction: TIBCTransaction;
    scCreate: TIBCScript;
    scDrop: TIBCScript;
    IBCConnectDialog: TIBCConnectDialog;
...
Wenn ich mit der Maus über die TIBCConnection fahre, zeigt sich ein Hinweis
"TIBCConnection - IBC.TIBCConnection"
Das Teil ist also bekannt!

Wenn ich noch ein bisschen genauer nachforsche, finde ich, dass die Quellen
IbDacDemoForm.pas und IbDacDemoForm.dfm
in IbDacDemo\Base\ liegen.

In IbDacDemoForm.dfm wiederum findet sich ein Teil
Delphi-Quellcode:
  object IBCConnection: TIBCConnection
    DefaultTransaction = IBCTransaction
    ConnectDialog = IBCConnectDialog
    Left = 553
    Top = 8
  end
  object IBCTransaction: TIBCTransaction
    DefaultConnection = IBCConnection
    DefaultCloseAction = taCommit
    Left = 552
    Top = 41
  end
  object scCreate: TIBCScript
    SQL.Strings = (
      'CREATE TABLE DEPT ('
      '   DEPTNO INTEGER NOT NULL PRIMARY KEY,'
      '   DNAME  VARCHAR(14),'
      '   LOC    VARCHAR(13)'
      ');'
      ''
etc.
etc.
Wenn ich mir aber in der IDE die Form ansehe, fehlt genau dieser Teil.

Aber nicht nur das ist seltsam!

Am Anfang des Formulars steht in der Originaldatei:
Delphi-Quellcode:
inherited IbDacForm: TIbDacForm
  Width = 1036
  Height = 503
  Caption = 'InterBase Data Access Components demos'
  TextHeight = 13
  inherited TVSplitter: TSplitter
    Height = 377
    Color = 6369932
  end
  inherited MainPanel: TPanel
    Width = 809
    Height = 377
    inherited pnDemo: TPanel
      Width = 809
      Height = 377
    end
    inherited pnSource: TPanel
      Width = 809
      Height = 377
    end
  end
etc.
etc.
In der IDE wurde daraus:
Delphi-Quellcode:
inherited IbDacForm: TIbDacForm
  Caption = 'InterBase Data Access Components demos'
  ClientHeight = 476
  ClientWidth = 1028
  ExplicitWidth = 1036
  ExplicitHeight = 503
  PixelsPerInch = 96
  TextHeight = 13
  inherited TVSplitter: TSplitter
    Height = 387
    Color = 6369932
    ExplicitHeight = 377
  end
  inherited MainPanel: TPanel
    Width = 809
    Height = 387
    ExplicitWidth = 809
    ExplicitHeight = 387
    inherited pnDemo: TPanel
      Width = 809
      Height = 387
      ExplicitWidth = 809
      ExplicitHeight = 387
    end
    inherited pnSource: TPanel
      Width = 809
      Height = 387
      ExplicitWidth = 809
      ExplicitHeight = 387
    end
  end

Was macht da Delphi beim Einlesen???

DeddyH 9. Feb 2009 16:43

Re: IBDAC-Demo funktioniert nicht
 
Zitat:

Na, toll!
Unter einer Demo verstehe ich eigentlich was anderes!
Dass ich meine Komponenten selber erzeugen muss, weiß ich natürlich, hätte aber gedacht, dass sie für eine Demo schon fertig erzeugt werden.
Der Sinn von Komponenten im Vergleich zu einfachen Klassen ist ja nunmal der, dass man sie eigentlich nicht zur Laufzeit erzeugen muss. Und als Komponentenhersteller, der eine Summe im 3-stelligen Bereich für seine Arbeit verlangt, würde ich auch davon ausgehen, dass der Kunde eine ähnliche Summe auch für sein Delphi hingeblättert hat.

globetrotter77 9. Feb 2009 16:51

Re: IBDAC-Demo funktioniert nicht
 
Eigentlich hatte ich keine Frage zum Sinn des Lebens bzw. zur Organisation desselben gestellt.
Stattdessen hätte ich gerne Tipps zu einem etwas merkwürdigen technischen Problem.
Wieso verändert die IDE den Quelltext des Formulars und meckert danach über eben diese Veränderung?

DeddyH 9. Feb 2009 16:54

Re: IBDAC-Demo funktioniert nicht
 
Weil TDE eben mit Absicht so ausgelegt wurde. Dann schau Dir doch die Original-dfm in Ruhe an, erzeuge die Kompos zur Laufzeit und stell sie enstsprechend der Vorgaben aus der dfm ein (die optischen Dinge wie Width, Left etc. kannst Du natürlich gleich weglassen).

globetrotter77 9. Feb 2009 17:41

Re: IBDAC-Demo funktioniert nicht
 
Zitat:

Zitat von DeddyH
Weil TDE eben mit Absicht so ausgelegt wurde. Dann schau Dir doch die Original-dfm in Ruhe an, erzeuge die Kompos zur Laufzeit und stell sie enstsprechend der Vorgaben aus der dfm ein (die optischen Dinge wie Width, Left etc. kannst Du natürlich gleich weglassen).

Das beantwortet die Frage nicht, wieso die IDE den Quelltext des Formulars verändert.
Wo kommen insbesondere die Einträge ExplicitHeight etc. her, und wieso werden einzelne Werte auch verändert?
Oder kommt das einfach daher, dass die Form von TDemoForm abgeleitet ist?

Und noch was:
Er meckert folgendes an:
"Unit-Name 'CRDBGrid' kann nicht aufgelöst werden"

In der .dpr wird diese aber folgendermaßen angegeben:
Delphi-Quellcode:
{$IFDEF CRDBGRID}
  CRDBGrid in 'CRDBGrid\CRDBGrid.pas' {CRDBGridFrame},
{$ENDIF}
und genau dort befindet sie sich auch.

mkinzler 9. Feb 2009 17:48

Re: IBDAC-Demo funktioniert nicht
 
Zitat:

Das beantwortet die Frage nicht, wieso die IDE den Quelltext des Formulars verändert.
Doch die IDE entfernt alle Komponenten, welche sich in nicht installierten Entwurfs-Bibliotheken befinden.
Zitat:

Er meckert folgendes an:
"Unit-Name 'CRDBGrid' kann nicht aufgelöst werden"
Innerhalb der IDE?

globetrotter77 9. Feb 2009 17:55

Re: IBDAC-Demo funktioniert nicht
 
Zitat:

Zitat von mkinzler
Zitat:

Das beantwortet die Frage nicht, wieso die IDE den Quelltext des Formulars verändert.
Doch die IDE entfernt alle Komponenten, welche sich in nicht installierten Entwurfs-Bibliotheken befinden.

Ach, die werden tatsächlich rausgeworfen? Das war mir neu! Ich dachte, er meckert dann erst beim Compilieren alles Mögliche an.
Zitat:

Zitat von mkinzler
Zitat:

Er meckert folgendes an:
"Unit-Name 'CRDBGrid' kann nicht aufgelöst werden"
Innerhalb der IDE?

Ja, innerhalb der IDE!
Hat sich aber auf sehr seltsame Weise erledigt:
Ich habe es mit // auskommentiert und direkt danach wieder aktiviert (also nicht compiliert und auch sonst nix dazwischen), und siehe da, simsalabim ... kein Gemecker mehr! Weiß der Geier, wieso!

globetrotter77 9. Feb 2009 17:59

Re: IBDAC-Demo funktioniert nicht
 
Zitat:

Zitat von mkinzler
Zitat:

Das beantwortet die Frage nicht, wieso die IDE den Quelltext des Formulars verändert.
Doch die IDE entfernt alle Komponenten, welche sich in nicht installierten Entwurfs-Bibliotheken befinden.

Irgendwo habe ich doch mal den etwas umständlich zu handhabenden Tipp gelesen, man könne Fremdkomponenten beispielsweise mit einer älteren Delphi-Version installieren, dann die Formulare erstellen und danach im Turbo Explorer verwenden ... das stimmt also auch nicht!

DeddyH 9. Feb 2009 18:01

Re: IBDAC-Demo funktioniert nicht
 
Das soll mit einer speziellen Version der GExperts funktionieren (nennt sich AFAIR ComponentsToCode oder so).

mkinzler 9. Feb 2009 18:02

Re: IBDAC-Demo funktioniert nicht
 
Doch natürlich. Es gibt einen Experte bei den GExperts (Components To Code), mit dem man Komponenten mit allen Einstellungen in Code wandeln kann.

globetrotter77 9. Feb 2009 18:06

Re: IBDAC-Demo funktioniert nicht
 
Zitat:

Zitat von mkinzler
Doch natürlich. Es gibt einen Experte bei den GExperts (Components To Code), mit dem man Komponenten mit allen Einstellungen in Code wandeln kann.

Jetzt, wo du es sagst, fällt es mir auch wieder ein ... es ging wirklich nur um die Code-Generierung ... sorry, das habe ich verwechselt!

globetrotter77 9. Feb 2009 19:34

Re: IBDAC-Demo funktioniert nicht
 
So, habe jetzt mal alle Angaben aus dem Original-Formular in mein FormCreate übernommen, die Reihenfolge noch geradegezogen und das Programm damit auch zum Laufen gebracht.
Jetzt stehe ich allerdings vor dem Problem, dass ich mich mit der Demo-DB verbinden muss und nicht weiß, wie.
In der Beschreibung habe ich jedenfalls noch nichts darüber gefunden.
Hat das schon mal jemand gemacht und weiß noch, welche Angaben gemacht werden müssen zu
- Username
- Passwort
- Server
- Database

???
Soll man da zuerst eine leere DB selber erzeugen oder ist eine in der Demo enthalten?

mkinzler 9. Feb 2009 19:40

Re: IBDAC-Demo funktioniert nicht
 
Bei der Vollversion ist keine DemoDB dabei, deshalb vermute ich, dass das bei der demo genauso ist.

globetrotter77 9. Feb 2009 19:45

Re: IBDAC-Demo funktioniert nicht
 
Zitat:

Zitat von mkinzler
Bei der Vollversion ist keine DemoDB dabei, deshalb vermute ich, dass das bei der demo genauso ist.

Ach so, das heißt, dass man sich nun eine leere DB erstellen muss, oder?
Da würde ich Firebird nehmen, ok!
Aber dann muss man doch dem Teil irgendwie beibringen, dass es mit Firebird arbeiten soll.
Wie geht das dann?
Muss man nicht irgendwo einen Verweis auf die verwendete DLL unterbringen?
Welcher Parameter ist dafür zuständig?
Und was hat es mit dem Server und der Database auf sich?
Was muss da eingetragen werden?

mkinzler 9. Feb 2009 20:01

Re: IBDAC-Demo funktioniert nicht
 
Zitat:

Ach so, das heißt, dass man sich nun eine leere DB erstellen muss, oder?
Kann auch etwas drin sein :zwinker:
Zitat:

Aber dann muss man doch dem Teil irgendwie beibringen, dass es mit Firebird arbeiten soll.
Wie geht das dann?
Du kannst die Client-Dll wählen.
Welcher Parameter ist dafür zuständig? .ClientLibrary
Zitat:

Und was hat es mit dem Server und der Database auf sich?
Server ist Name oder IP des Servers. Port ist 3050 (Standard)
Datenbank der Pfad zur Datenbank( aus Serversicht)

globetrotter77 9. Feb 2009 20:11

Re: IBDAC-Demo funktioniert nicht
 
Zitat:

Zitat von mkinzler
Zitat:

Ach so, das heißt, dass man sich nun eine leere DB erstellen muss, oder?
Kann auch etwas drin sein :zwinker:

ach nee!
Zitat:

Zitat:

Aber dann muss man doch dem Teil irgendwie beibringen, dass es mit Firebird arbeiten soll.
Wie geht das dann?
Du kannst die Client-Dll wählen.
Welcher Parameter ist dafür zuständig? .ClientLibrary
OK, auch gefunden, die hängt an der IBCConnection dran ... als Pfadangabe vermutlich
Zitat:

Zitat:

Und was hat es mit dem Server und der Database auf sich?
Server ist Name oder IP des Servers. Port ist 3050 (Standard)
Datenbank der Pfad zur Datenbank( aus Serversicht)
Ich habe aber keinen Server (oder doch?)
Eigentlich wollte ich mit der Embedded-Version arbeiten, weil da auf dem Zielrechner nichts zusätzlich installiert werden muss.
Was dann?

mkinzler 9. Feb 2009 20:16

Re: IBDAC-Demo funktioniert nicht
 
Beim embedded lässt du den Server leer

globetrotter77 9. Feb 2009 22:06

Re: IBDAC-Demo funktioniert nicht
 
Zitat:

Zitat von mkinzler
Beim embedded lässt du den Server leer

Danke! Jetzt geht's!


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 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