Delphi-PRAXiS
Seite 1 von 3  1 23      

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!


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:29 Uhr.
Seite 1 von 3  1 23      

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