Installationshinweise für CodeGear RAD Studio 2007

작성자: Masahiro Arai

요약: Diese Datei enthält wichtige ergänzende Informationen, die möglicherweise nicht in der Hauptdokumentation zu dem Produkt vorhanden sind.

목차

Installationshinweise für CodeGear RAD Studio 2007

Diese Datei enthält wichtige ergänzende Informationen, die möglicherweise nicht in der Hauptdokumentation zu dem Produkt vorhanden sind. Wir empfehlen Ihnen, diese Datei vollständig durchzulesen. Eine aktualisierte Version der Installationshinweise finden Sie im CodeGear Developer Network (http://dn.codegear.com/de/article/36873).

Der Begriff "Produkt" bezieht sich in diesem Dokument auf alle drei Komponenten des CodeGear RAD Studio 2007: Delphi 2007 für Win32, Delphi 2007 für .NET und C++Builder 2007.

Informationen zur Installation, zum Deployment und zur Lizenzierung finden Sie in den Dateien Install, Deploy und License, die sich standardmäßig im Ordner C:\Programme\CodeGear\RAD Studio\5.0 befinden.

Inhalt

Installation, Deinstallation und Upgrade des Produkts

  • Vor der Installation, der Deinstallation oder dem Upgrade des Produkts sollten Sie die Dateien INSTALL und LICENSE lesen, um detaillierte Informationen über Installations- und Lizenzierungsfragen zu erhalten. Lesen Sie auch die FAQs unter http://dn.codegear.com/article/36523. In der Datei INSTALL.htm finden Sie die System- und Speicherplatzanforderungen für die Installation von RAD Studio 2007 sowie Installations- und Upgrade-Anweisungen.

    Wo finden Sie die Datei INSTALL.htm?

    Nach der Installation werden die Dateien INSTALL.htm und LICENSE.rtf standardmäßig hier gespeichert:

    C:\Programme\CodeGear\RAD Studio\5.0\

  • Das Installieren der Produkte in der falschen Reihenfolge kann zu Problemen führen und sollte vermieden werden. Ein Beispiel:

    • Installieren Sie Borland Developer Studio 2006 nicht nach RAD Studio 2007. Wenn Sie dies versuchen, lässt sich BDS 2006 nicht mehr starten. Nach der Registrierung tritt der folgende Fehler auf:

      Exception EPackageRegistrationException in Modul coreide100.bpl bei 000DB245. Registrierungsprozedur, Cppproject.IDERegister in Package C:\Programme\Borland\BDS\4.0\Bin\bcbide100.bpl hat die Exception-Klasse EOleSysError: OLE-Fehler 80131040, ClassID: {F8FEDD39-E3CE-4B8D-A657-9CA24686881F} ausgelöst.

      In diesem Fall wird die Assemblierung nicht korrekt bei der BDS2006-Installation registriert. Wenn sowohl .NET 2.0 als auch .NET 1.1 auf dem System vorhanden sind, kann borland.studio.toolsets.dll nicht geladen werden. Die Problemvermeidung besteht darin, für die Assemblierung explizit .NET 1.1 zu verwenden. Weitere Informationen finden Sie unter:

      http://qc.codegear.com/wc/qcmain.aspx?d=28728

      http://qc.borland.com/wc/qcmain.aspx?d=22108

      http://support.codegear.com/article/36047

    • Installieren Sie Delphi 2007 für Win32 oder C++Builder 2007 nicht von der Original-DVD, nachdem Sie CodeGear RAD Studio 2007 installiert haben. Die Installation schlägt fehl.

  • Das Installationsprogramm gibt keine Warnung aus, wenn nicht genügend freier Speicherplatz für die Installation des Produkts vorhanden ist. Auf Laufwerk C: werden etwa 2 GB Festplattenspeicher benötigt, um RAD Studio zu installieren (dies gilt auch, wenn Sie auf ein anderes Laufwerk installieren). Wenn zu wenig Speicherplatz vorhanden ist, könnte das Installationsprogramm blockieren.

  • Bei der Deinstallation von CodeGear RAD Studio 2007 werden einige Systemdateien bzw. -einstellungen entfernt. Dies verhindert eine nachfolgende Deinstallation oder Reparatur von .NET 2.0 bis zum nächsten Neustart.

  • Es kann gleichzeitig nur ein Set von Microsoft® Office Controls registriert und in der IDE verfügbar sein. Die verfügbaren Packages sind OfficeXP für Delphi Win32, OfficeXP für C++Builder, Office2K für Delphi Win32 und Office2K für C++Builder. Sie registrieren diese Packages in der IDE mit dem Menübefehl Komponenten>Packages installieren.

Zurück zum Anfang

Allgemeine Hinweise

  • Auf den Referenzseiten der Online-Hilfe wurden etwa 150 Codebeispiele (Delphi) neu getestet und eingerichtet. Beachten Sie, dass die Kommentare ausschließlich in englischer Sprache verfasst sind. Es ist vorgesehen, die Code-Snippets auch auf der CDN CodeCentral-Website zur Verfügung zu stellen.
  • Die Demos für das Produkt werden – abhängig davon, wie Sie das Produkt installiert haben und ob Sie Windows Vista verwenden – in unterschiedlichen Verzeichnissen installiert:
    • Wenn Sie Für alle Benutzer ausgewählt haben, werden die Demos in dem Verzeichnis C:\Dokumente und Einstellungen\All Users\Dokumente\RAD Studio\5.0\Demos installiert.
    • Wenn Sie Nur für mich ausgewählt haben, werden die Demos im Verzeichnis C:\Dokumente und Einstellungen\Benutzername\Eigene Dateien\RAD Studio\5.0\Demos installiert.
    • Wenn Sie unter Windows Vista während der Installation Für alle Benutzer auswählen, werden die Demos in dem Verzeichnis C:\Users\Public\Documents\RAD Studio\5.0\Demos gespeichert.
    • Wenn Sie unter Windows Vista während der Installation Nur für mich auswählen, werden die Demos in dem Verzeichnis C:Users\Benutzername\Documents\RAD Studio\5.0\Demos gespeichert.
  • Indy10 ist in das Produkt integriert. Sie können aber aus dem Verzeichnis C:\Programme\CodeGear\RAD Studio\5.0\source\Win32\Indy9 auch die Vorgängerversion, Indy9, installieren.
  • Zum Erstellen von WebAppDebugger-Anwendungen mit Packages müssen Sie das Package Indy9 in die Liste der Laufzeit-Packages vor den Indy10-Packages aufführen.

    Wählen Sie dazu Komponenten>Packages installieren.

    Fügen Sie "indy;" am Anfang der Liste der Laufzeit-Packages folgendermaßen hinzu:

    indy;vcl;rtl;bcbie;vclx;vclactnband;xmlrtl;bcbsmp;dbrtl;vcldb;bdertl;vcldbx;dsnap;dsnapcon;teeUI;tee;teedb;vclib;ibxpress;adortl; dbxcds;dbexpress;DbxCommonDriver;IndyCore;IndySystem;IndyProtocols;inet;IntrawebDB_90_100;Intraweb_90_100;VclSmp;vclie;websnap;webdsnap;inetdbbde;inetdbxpress;soaprtl

  • Für das Debuggen von Webanwendungen müssen Sie zunächst die Datei serverinfo.exe ausführen, die sich selbst registriert. Dieser Schritt ist für den Debugger für Webanwendungen (WebAppDbg.exe im Verzeichnis \bin Ihrer Installation) erforderlich.
  • Informationen zu IntraWeb, einschließlich Hilfe zur VCL für Webkomponenten finden Sie unter http://www.atozed.com/intraweb/docs/.
  • Es kann sein, dass das .NET-Framework und das .NET SDK in unterschiedlichen Sprachen, wie z.B. Englisch und Japanisch, erscheinen. Das .NET-Framework installiert alle möglichen Sprachen und bestimmt dann die den Gebietseinstellungen entsprechende Sprache. Das .NET SDK installiert dagegen nur die Sprache, die Sie bei der Installation auswählen.
  • Zum Registrieren eines COM-Server müssen Sie ihn (nur das erste Mal) mit dem Parameter /regserver ausführen. Führen Sie die folgenden Schritte durch:
    1. Erstellen Sie ein Projekt.
    2. Speichern Sie das Projekt.
    3. Setzen Sie den Parameter /regserver unter Start | Parameter.
    4. Führen Sie das Projekt aus. Die Anwendung wird registriert und anschließend geschlossen.
    5. Entfernen Sie die Einstellung /regserver unter Start | Parameter.
  • Wenn Sie VCL-Komponenten für die Weitergabe entwickeln, und Ihr Komponenteninstallationsprogramm die Pfadangaben in der Registrierung aktualisiert, damit die Pfade zu Ihren Komponenten einbezogen werden, muss Ihr Installationsprogramm einen weiteren Registrierungsschlüssel in HKEY_LOCAL_MACHINE aktualisieren und zwar unter:

    Software\Borland\BDS\5.0\Globals

    Fügen Sie einen String-Wert namens ForceEnvOptionsUpdate hinzu (oder aktualisieren Sie ihn, falls er bereits vorhanden ist). Weisen Sie einen String-Wert von "1" zu. Wenn dieser Registrierungsschlüssel den Wert "1" hat, wird bei der nächsten Ausführung der IDE die Datei EnvOptions.proj aktualisiert, damit sie die von Ihrem Installationsprogramm hinzugefügten Pfadangaben enthält. Die Datei EnvOptions.proj ist der Mechanismus, mit dem die neue MSBuild-Build-Engine in der IDE Pfadangaben einbezieht, die auf der Seite Bibliothek - Win32 des Dialogfeldes Tools>Optionen aufgeführt sind.

    Wenn Ihr Installationsprogramm einen der folgenden Registrierungsschlüssel aktualisiert, sollte auch der Schlüssel Globals\ForceEnvOptionsUpdate hinzugefügt oder aktualisiert werden:

    • Software\Borland\BDS\5.0\Library\Browsing Path
    • Software\Borland\BDS\5.0\Library\Debug DCU Path
    • Software\Borland\BDS\5.0\Library\Namespace Search Path
    • Software\Borland\BDS\5.0\Library\Package DCP Output
    • Software\Borland\BDS\5.0\Library\Package DPL Output
    • Software\Borland\BDS\5.0\Library\Search Path
  • Der vorhandene WinHelp-Viewer (WinHelp.exe) wird von RAD Studio nicht implizit registriert. Wenn Sie die .HLP-Dateien einer Anwendung verwenden möchten, müssen Sie den WinHelp-Viewer zum Abschnitt uses einer jeden Unit hinzufügen, die in die Anwendung eingebunden wird.

    Bei Bedarf können Sie den WinHelp-Viewer von der folgenden Microsoft-Adresse herunterladen:

    http://www.microsoft.com/downloads/details.aspx?displaylang=de&FamilyID=6ebcfad9-d3f5-4365-8070-334cd175d4bb.

Zurück zum Anfang

Bekannte Probleme

Dynamische Link-RTL kann beim dynamischen Laden einer DLL nicht verwendet werden

Wenn Sie eine DLL dynamisch laden, können Sie sie nicht dynamisch mit der Laufzeitbibliothek linken. Ansonsten tritt eine Zugriffsverletzung bei Programmende auf. Deaktivieren Sie zur Lösung des Problems die Option Dynamische RTL auf der Seite Linker des Dialogfeldes Projektoptionen.

NO_STRICT #define muss bei der GdiPlus-Bibliothek ausgeschaltet sein

Die C++-Bibliothek GdiPlus kann nur im Modus STRICT verwendet werden, da für diese Bibliothek die Unterscheidung zwischen Graphics::Graphics(HDC) und Graphics::Graphics(HWND) erforderlich ist. Im Modus "Nicht STRICT" sind HWND und HDC "void*". Andernfalls erhalten Sie den Fehler:

[C++-Fehler] GdiplusGraphics.h(37): E2015 Mehrdeutigkeit zwischen 'Gdiplus::Graphics::Graphics(void *)' und 'Gdiplus::Graphics::Graphics(void *,int)'

ActiveX

Die Menüeinträge Registrieren und Registrierung aufheben sind nicht aktiviert, wenn Sie ein ActiveX-Bibliotheksprojekt in C++Builder 2007 öffnen und ausführen, das mit C++Builder 6 erstellt wurde. Die Problemvermeidung besteht darin, Start>Parameter aufzurufen und die Host-Anwendung auf "C:\windows\system32\regsvr32.exe" und die Parameter auf <Projektname> zu setzen.

Zurück zum Anfang

ASP.NET

  • So aktivieren Sie Ihre ASP.NET 2.0-Anwendungen so, dass auf einem IIS 7.0-Webserver mit Vista virtuelle Verzeichnisse abgefragt oder erstellt werden:

    1. Aktivieren Sie die IIS 6 Management-Funktion:
      1. Wählen Sie in der Systemsteuerung von Vista die Option Programme und Funktionen.
      2. Klicken Sie auf Windows-Funktionen ein- oder ausschalten. Das Dialogfeld Windows-Funktionen wird geöffnet.
      3. Wählen Sie den Knoten Internet-Informationsdienste | Web-Verwaltungs-Tools | Kompatibilität mit IIS6-Verwaltung, um die IIS Metabase und die Kompatibilität mit der IIS6-Konfiguration zu aktivieren.
    2. Führen Sie Delphi 2007 für .NET als Administrator aus.
  • Da Assemblierungen standardmäßig für 32 Bit erstellt werden, laufen sie nicht unter einem virtuellen IIS-Verzeichnis, das für 64 Bit konfiguriert ist. Wenn Sie eine 32 Bit ASP.NET-Anwendung unter Vista ausführen und IIS auf einem 64 Bit-Betriebssystem einsetzen, gehen Sie folgendermaßen vor:

    1. Wählen Sie in der Systemsteuerung von Vista die Option Verwaltung.
    2. Doppelklicken Sie auf Internet Information Services (IIS) Manager.
    3. Klicken Sie in der Liste Anwendungs-Pool auf DefaultAppPool.
    4. Klicken Sie rechts auf Erweitert.
    5. Wählen Sie 32 Bit-Anwendungen aktivieren.
    6. Klicken Sie auf OK.
  • Für die Fehlersuche in einer ASP.NET-Anwendung auf dem IIS-Webserver in Vista müssen Sie der Datei web.config Ihres Projekts die folgenden Direktiven hinzufügen:


    <system.webServer>
        <modules>
           <add name="DbgConnect" type="Borland.DbkAsp.DbkConnModule,Borland.dbkasp,Version=10.5.0.0, Culture=neutral, PublicKeyToken=b0524c541232aae7" preCondition="managedHandler" />
        </modules>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>

Zurück zum Anfang

Blackfish SQL

Blackfish SQL ist eine leistungsstarke Transaktions-Datenbank, die aus JDataStore hervorgegangen ist.
  • Die Blackfish SQL-API ist für .NET-Anwendungen und für Delphi- und C++-Anwendungen unter Win32 verfügbar.
  • Eine Übersicht über Blackfish SQL finden Sie im CodeGear Developer Network unter:

    http://dn.codegear.com/de/article/36851

  • Das Blackfish SQL Entwicklerhandbuch kann bei CodeCentral heruntergeladen werden:

    http://cc.codegear.com/


Zurück zum Anfang

Windows VistaTM

  • In Windows Vista müssen Sie zum Durchführen der Installation als Benutzer mit Administratorrechten angemeldet sein, weil das Ändern des Verzeichnisses "Programme" eine erhöhte Sicherheitsstufe erfordert.
  • Der Registrierungs-Client schlägt gelegentlich unter Windows Vista fehl. Wählen Sie zur Umgehung dieses Problems Dieses Programm zulassen, wenn die Windows Live OneCare Firewall erscheint. Beenden Sie die Registrierung anschließend, und führen Sie sie erneut aus. Wählen Sie nicht Dieses Programm blockieren, weil dies eine spätere Registrierung verhindert.
  • Windows Vista unterstützt den alten WinHelp-Hilfe-Viewer (WinHelp.exe) nicht. Wenn Sie .HLP-Dateien verwenden möchten, müssen Sie den WinHelp-Viewer zum Abschnitt uses einer jeden Unit hinzufügen, die in die Anwendung eingebunden wird. Der WinHelp Viewer kann auf der Microsoft-Website http://www.microsoft.com/downloads/details.aspx?familyid=6ebcfad9-d3f5-4365-8070-334cd175d4bb heruntergeladen werden. Weitere Informationen finden Sie unter Allgemeine Hinweise.
  • Wenn Sie in Vista die Komponente TAnimation verwenden, müssen Sie Ihrem Projekt auch die Komponente TShellResource auf der Registerkarte Win32 hinzufügen. TShellResource fügt die folgenden Ressourcen hinzu:
    • FindFolder.res
    • FindFile.res
    • FindComputer.res
    • CopyFiles.res
    • CopyFile.res
    • RecycleFile.res
    • EmptyRecycle.res
    • DeleteFile.res
  • Bei der Verwendung der BDE unter Windows Vista müssen Sie die BDE neu konfigurieren, damit nicht versucht wird, Dateien in das Verzeichnis C:\<Stamm> zu schreiben. Melden Sie sich dazu als Administrator an, und führen Sie die Datei BDEAdmin.exe aus (Programme\Gemeinsame Dateien\Borland Shared\BDE). Klicken Sie unter Native auf PARADOX, und ändern Sie den Parameter NET DIR so, dass er nicht auf das Stammverzeichnis zeigt. Sie könnten beispielsweise als Ziel C:\Users\Public\Documents\RAD STUDIO angeben.
  • Wenn Sie ein Manifest hinzufügen, das die Erweiterung von Windows Vista zu einer Exe-Datei oder einer DLL-Datei in Windows XP Service Pack 2 (mit SP2) hat, wird der Computer möglicherweise neu gestartet. Weitere Informationen zu diesem Problem und dessen Behebung finden Sie unter http://support.microsoft.com/kb/921337.
  • Wenn Sie eine vorhandene VCL-Anwendung, die Standarddialogfeldkomponenten enthält, neu compilieren und auf einem Vista-System ausführen, werden die Vista-Datei- und Task-Dialogfelder anstelle der traditionellen Öffnen-, Speichern- und Meldungsdialogfelder verwendet. Wenn dies nicht erwünscht ist, setzen Sie am Anfang des Programms die globale Variable UseLatestCommonDialogs auf false. Damit wird das ursprüngliche Verhalten hergestellt.
  • Zum Ausführen und Debuggen von VCL-Webanwendungen (IntraWeb) sollten Sie Windows 2003 oder Windows XP verwenden. Wenn Sie Windows Vista verwenden, müssen Sie beim Debuggen von VCL-Webanwendungen User Access Control (UAC) deaktivieren. Weitere Informationen zu IntraWeb, einschließlich Hilfe zur VCL für Webkomponenten finden Sie unter http://www.atozed.com/intraweb/docs/.
  • Wenn unter Vista UAC aktiviert ist, und der Name einer ausführbaren Datei "setup", "update" oder "install" enthält, können Sie das Programm nur debuggen, wenn die IDE unter dem Systemadministratorkonto gestartet wird. Der Versuch, ausführbare Dateien, die diese Strings enthalten, außerhalb der IDE auszuführen, führt zur Anzeige des Dialogfeldes Benutzerkontensteuerung, das zur Eingabe des Passwortes für das Systemadministratorkonto auffordert. Wenn Sie diese Dateien in der IDE ohne Debugger ausführen, wird eine Fehlermeldung angezeigt. Die Meldung besagt, dass für das Programm eine höhere Berechtigung erforderlich ist. Das Ausführen dieser Dateien in der IDE mit Debugger erzeugt einen Prozesserstellungsfehler. Weitere Informationen finden Sie unter http://blogs.msdn.com/uac/archive/2006/01/13/512776.aspx.

Zurück zum Anfang

C++Builder und C++-Compiler

Mögliche binäre Inkompatibilität mit früheren Versionen des C++-Compilers

Die C++-Laufzeitbibliotheken wurden erweitert, geändert und auf Dinkumware 5.01 aktualisiert. Die C++-Standardbibliotheken von Dinkumware wurden auf Version 5.01 aktualisiert. Wegen dieser Änderungen unterscheiden sich die vom Compiler in C++Builder 2007 erzeugten binären Objekte möglicherweise in einigen Fällen von denjenigen aus früheren Versionen. Die Inkompatibilität erstreckt sich hauptsächlich auf die C++-Standardbibliotheken. Am grundlegenden C++-ABI (Application Binary Interface) wurden keine Änderungen vorgenommen.

Der Delphi-Interface-Parameter mit dem Standardwert nil wird unterschiedlich behandelt. Zuweisen des Typs void * zu einem Delphi-Interface führt beim Compilieren zu einem Fehler.

Wenn ein Interface-Parameter den Standardwert nil hatte, erzeugte der Delphi-Compiler (DCC32) früher in der .hpp-Datei den folgenden Quelltext:

void methodName(_di_IIntf param = (void *)(0x0));

Der C++-Compiler hat früher fälschlicherweise diese Syntax akzeptiert.

In diesem Release behandeln der Delphi-Compiler und der C++-Compiler diesen Fall unterschiedlich.

Der Delphi-Compiler gibt jetzt für einen Interface-Parameter mit dem Standardwert nil in der .hpp-Datei etwa folgenden Quelltext aus:

void methodName(_di_IIntf param = _di_IIntf());

Der C++-Compiler gibt jetzt einen Fehler für Quelltext aus, der einem Delphi-Interface den Typ "void *" zuweist. Die Zeile

void methodName(_di_IIntf param = (void *)(0x0));

wird nun nicht compiliert und der folgende Fehler ausgegeben:

'void *' kann nicht in '_di_IIntf' konvertiert werden

Wenn Ihr Delphi-Quelltext einen Interface-Parameter mit dem Standardwert nil enthält, müssen Sie ihn mit DCC32 erneut compilieren. Wenn Sie nicht über den Quelltext verfügen, bearbeiten Sie die .hpp-Datei und ändern alle Vorkommen wie

void methodName(_di_IIntf param = (void *)(0x0));

in:

void methodName(_di_IIntf param = _di_IIntf());

Auswahl beider Symbolreferenzinfo-Optionen für Delphi-Quelltext

Wenn Sie Delphi-Quelltext in Ihrem C++Builder-Projekt compilieren, können Sie derzeit im Dialogfeld Projekt>Optionen>Delphi-Compiler>Compilierung nur eine der Symbolreferenzinfo-Optionen (entweder Definitionen oder Referenzinfo) auswählen. Bei Verwendung der Direktiven ($ xx ) auf Quelltextebene können Sie jedoch folgendermaßen beide Optionen auswählen:
  • Option Definitionsinfo ($YD): Der Delphi-Compiler zeichnet Informationen darüber auf, wo jeder Bezeichner definiert ist. Bei den meisten Bezeichnern (Variablen, Konstanten, Klassen usw.) zeichnet der Compiler die Stelle auf, an der die jeweilige Deklaration steht. Bei Prozeduren, Funktionen und Methoden wird die Stelle aufgezeichnet, an der sich die Implementierung befindet. Dies ermöglicht das Suchen im Quelltext-Editor.
  • Option Referenzinfo ($Y+): Der Delphi-Compiler zeichnet Informationen darüber auf, wo jeder Bezeichner verwendet wird und wo er definiert ist. Dies ermöglicht die Verwendung der Seite Referenz im Projekt-Browser.
Diese Compiler-Optionen stehen nur zur Verfügung, wenn sowohl die Option Debug-Information ($D ) als auch die Option Lokale Debug-Symbole ($L ) aktiviert ist.

Festlegen von WebSnap-Verzeichnissen

Wenn Sie C++Builder mit WebSnap verwenden, müssen Sie sicherstellen, dass die ausführbaren Dateien in dasselbe Verzeichnis wie die HTML-Dateien gespeichert werden. Geben Sie unter Projekt>Optionen>Pfade und Definitionen>Endgültige Ausgabe einen Punkt (".") ein, damit die ausführbare Datei im Projektverzeichnis gespeichert wird.

Positionsänderung für vorcompilierte Header

Vorcompilierte C++-Header-Dateien (VCH) werden an eine andere Dateiposition als BDS2006 platziert. Wenn Sie ein Projekt aus BDS2006 importieren, importiert es nicht die frühere VCH-Dateiposition des Projekts. Sie können die VCH-Datei unter Projekt>Optionen>Vorcompilierte Header>VCH-Dateiname festlegen.

Erzeugen von C++-Dateien mit dem Delphi-Compiler

Wenn Sie .hpp-Dateien (und die zugehörige .obj) aus einer .pas-Datei erzeugen möchten, müssen Sie dcc32.exe mit dem Schalter -JPHNE verwenden. Oder verwenden Sie -JL mit der .dpk-Datei, die die .pas-Datei enthält.

Die Delphi-Tools DesignIntf und DesignEditors

Zum Erstellen eines C++-Package mit einer Delphi-Unit, die die Tools DesignIntf und DesignEditors verwendet, müssen Sie Projekt | Optionen | Delphi-Compiler | Weitere Optionen wählen. Fügen Sie unter Diese Packages beim Compilieren verwenden die Option DesignIDE im Kombinationsfeld hinzu.

WinHelp in C++-Anwendungen verwenden

So verwenden Sie WinHelp in C++-Anwendungen:

  1. Fügen Sie #include <WinHelpViewer.hpp> hinzu.
  2. Beziehen Sie sich auf ein Objekt, das in der Header-Datei des WinHelp-Viewers deklariert ist.

    void LinkWinHelp()

    {

      # pragma startup LinkWinHelp 66

      if (WinHelpTester != NULL)

            WinHelpTester->GetHelpPath();

    }

Bei Bedarf können Sie den WinHelp-Viewer von der folgenden Microsoft-Adresse herunterladen:

http://www.microsoft.com/downloads/details.aspx?familyid=6ebcfad9-d3f5-4365-8070-334cd175d4bb .

Änderungen beim C++-Compiler

Der mit C++Builder 2007 ausgelieferte C++-Compiler ist strikter als die früheren Versionen und orientiert sich genauer am C++ ANSI-Standard. Die Compilierung von Quelltext, der in früheren Versionen von C++Builder keine Fehler erzeugte, könnte mit C++Builder 2007 fehlschlagen. Der folgende Abschnitt enthält eine Beschreibung der Änderungen. Jeder Fall ist mit einem Beispiel illustriert, das zeigt, wo das Problem liegt und wie der Quelltext geändert werden muss, damit er mit C++Builder 2007 compiliert werden kann. Beachten Sie, dass es meist mehrere Möglichkeiten gibt, den verursachenden Code zu ändern. Die geeignete Methode hängt vom Zweck des ursprünglichen Quelltextes ab.

Bindung von Referenzen und Qualifizierern

Es gibt viele Konstrukte, die beim C++-Compiler von C++Builder 2007 eine Fehlermeldung hervorrufen. Die entsprechenden Regeln finden Sie in Abschnitt 8.5.3 des C++-ANSI-Standards 2003. Die Konstrukte lassen sich in die folgenden Kategorien unterteilen:

  1. Binden eines nicht konstanten lvalue an eine nicht konstante Referenz. Verwenden Sie den Compiler-Schalter -Vbr.
  2. Binden einer temporären an eine nicht konstante Referenz. Verwenden Sie den Compiler-Schalter -Vbr.
  3. Binden von const- oder volatile-Objekten an Methoden, die nicht const bzw. volatile sind. Verwenden Sie den Compiler-Schalter -Vbn.

Frühere Versionen des Borland C++-Compilers ließen verschiedene Arten der Bindung an nicht-const-Referenzparameter zu. So konnte im folgenden Beispiel der Parameter psize einfach umgewandelt werden:

  int takesLongRef(long& l);

  int takesUnsignedPtr(unsigned long* psize) {

     return takesLongRef((long)*psize);
  }

In C++Builder 2007 erzeugt der obige Quelltext die folgenden Fehler:

  Fehler E2357 test.cpp 3: Eine mit 'long' initialisierte Referenz-Variable muss einen L-Wert des Typs 'long' in Funktion takesUnsignedPtr(unsigned long *) haben.

  Fehler E2342 test.cpp 3: Keine Typübereinstimmung im Parameter 'l' ('long &' erwartet, 'long' erhalten) in Funktion takesUnsignedPtr(unsigned long *)

Um dies zu beheben, können Sie eine Typumwandlung von psize vor der Dereferenzierung vornehmen, wie z.B.:

  int takesLongRef(long& l);

  int takesUnsignedPtr(unsigned long* psize) {
    return takesLongRef(*reinterpret_cast<long*>(psize));
  }

Achten Sie auf Fälle, in denen auf versteckte Weise temporäre Werte verwendet werden. Einige binäre Operatoren setzen beispielsweise einen temporären Wert voraus:

  enum { zero, one, two } num;

  num |= two; // Nicht erlaubt
  num = num | two; // OK

Ein anderer Fall, bei dem temporäre Werte beteiligt sind, ist der Rückgabewert einer Eigenschaft. Der Code im folgenden Beispiel wurde mit früheren Versionen des Compilers compiliert:

  #include <vcl.h>

  class TTest {
    WideString FData ;
  public:
    __property WideString Data = {read = FData };
  };

  void Func(WideString& wref);

  void test() {
    TTest t;
    Func(t.Data);
  }

In C++Builder 2007 erzeugt der obige Quelltext die beiden folgenden Fehler:

  Fehler E2357 test.cpp 14: Eine mit 'const WideString' initialisierte Referenz-Variable muss einen L-Wert des Typs 'WideString' in Funktion test() haben.
  Fehler E2342 test.cpp 14: Keine Typübereinstimmung im Parameter 'wref' ('WideString &' erwartet, 'WideString' erhalten) in Funktion test()

Sie können dies beheben, indem Sie die Referenz wie folgt in eine const-Referenz ändern:

  void Func(const WideString& wref);

Das folgende Beispiel zeigt den Versuch, ein const-Objekt an eine nicht-const-Methode zu binden:


  struct X {
    void foo();
  };
  const X x;
  x.foo(); //Fehler

1.1 Dialogfeld "Fehler beheben"

Das Problem mit den temporären Variablen und Referenzen tritt in Quelltext auf, der von früheren Versionen des Dialogfeldes Fehler beheben erzeugt wurde. Um dies zu beheben, suchen Sie nach der Methode VarToAnsiStr:


  AnsiString VarToAnsiStr (Variant &V, TFieldType DataType)

Ändern Sie die Methode so, dass sie ein const Variant& aufnehmen kann:

  AnsiString VarToAnsiStr (const Variant &V, TFieldType DataType)

2. String-Literale sind jetzt Konstanten

String-Literale werden nun standardmäßig als 'const char[]' behandelt. Zusammen mit der strengeren Bindung von const-Werten und -Typen kann dies bei älterem Code Fehlermeldungen verursachen.

Aktivieren Sie den Schalter -Vbs, damit String-Literale wieder als nicht-const behandelt werden. CodeGear empfiehlt allerdings, stattdessen den Code zu aktualisieren.

Beachten Sie, dass die Änderung am Typ der String-Literale auch das Verhalten des Compilers beim Auflösen von Aufrufen überladener Methoden beeinflusst. Das folgende Beispiel zeigt diesen Sachverhalt:

  void foo(char *);
  void foo(const char *);
  foo("string"); // Der neue Compiler verwendet foo(const char *)

3. Änderungen an Templates

Der C++-Compiler erlaubt keine expliziten Templates ohne das Präfix 'template <>'. Verwenden Sie als Abhilfe den Compiler-Schalter -Vbe. Dazu ein Beispiel:

  template<class>
  class foo {
    foo();
  };
  foo<int>::foo(); // Fehler
  template<> foo<int>::foo(); // OK

Außerdem erlaubt der C++-Compiler keine explizite Template-Spezialisierung innerhalb einer Klasse. Verwenden Sie als Abhilfe den Compiler-Schalter -Vbx. Der folgende Code erzeugt beispielsweise einen Fehler:

  struct S {};
  struct SP
  {
    template <typename T> void foo(const T &) {}
    template <> void foo(const S &) {} // Fehler
  };

  template <> void SP::foo(const S &) {} //OK

4. Auflösung der Funktionsüberladung

Einer der Bereiche, in denen sich der C++Builder 2007-Compiler am meisten von der früheren Version unterscheidet, ist die Auflösung der Funktionsüberladung. Dazu gehört auch das Erkennen von Mehrdeutigkeit. Der Compiler entspricht nun genau den Regeln in Abschnitt 13.3 des 2003 C++ ANSI-Standards. Konstrukte, die früher zulässig waren, können jetzt als mehrdeutig oder als 'Keine Übereinstimmung' eingestuft werden. Daher müssen Sie den Quelltext so ändern, dass Ihre Absicht klar wird.

Mit dem Compiler-Schalter -Vbo können Sie auf das frühere Verhalten zurückgreifen. Allerdings lassen sich nicht alle Änderungen am Compiler über diesen Schalter steuern. CodeGear empfiehlt Ihnen, stattdessen den Code zu aktualisieren.

Die Mehrdeutigkeit im folgenden Beispiel wurde vom vorherigen Compiler nicht beanstandet:

  class X{};
  void foo(X);
  void foo(const X&);
  void ambig() {
    X x;
    foo(x); //Fehler – Mehrdeutig – Vorheriger Compiler wählt 'void foo(x)'
  }

4.1 Mehrdeutigkeit von std::abs()

Die Standardfunktion abs kann auch eine Mehrdeutigkeitsmeldung erzeugen, wenn sie mit einem Parameter aufgerufen wird, der nicht genau den Typen entspricht, die von den verschiedenen überladenen Versionen von abs erwartet werden. Dazu ein Beispiel:

  #include <limits>
  bool test(long l) {
    return std::abs(l) > 0;
  }

Der obige Quelltext erzeugt einen Compiler-Fehler und eine Warnung:

  Fehler E2015 test.cpp 5: Mehrdeutigkeit zwischen 'std::abs(int) in C:\dev\tp\sc\include\math.h:208' und 'std::abs(long double) in C:\dev\tp\sc\include\math.h:275' in Funktion test(long)
  Warnung W8057 test.cpp 6: Parameter 'l' wird nie verwendet in Funktion test(long)

Um dies zu beheben, wandeln Sie in den Typ der überladenen Funktion um, die aufgerufen werden soll. Zum Beispiel:

  #include <limits>
  bool test(long l) {
    return std::abs(static_cast<int>(l)) > 0;
  }


5. Initialisierung und Konvertierung

Der Compiler entspricht nun den Regeln in Abschnitt 8.5.1 und 13.3.1 des 2003 C++ ANSI-Standards für Initialisierung und Konvertierung:

  1. Die direkte Initialisierung erfordert nun die Initialisierung durch einen Konstruktor und hängt nicht mehr von einer Konvertierungssequenz des Benutzers ab.
  2. Die Kopierinitialisierung von Objekten desselben oder eines abgeleiteten Typs erfordert nun den Aufruf eines Konstruktors.
  3. Die Kopierinitialisierung von Objekten unterschiedlicher Typen bevorzugt nicht mehr die Konvertierung durch den Benutzer gegenüber dem Konstruktoraufruf. Findet der Compiler eine brauchbare Benutzerkonvertierung, setzt er nun die Suche nach (möglicherweise mehrdeutigen) konvertierenden Konstruktoren fort. Ist die gefundene Konvertierungsfunktion ein konvertierender Konstruktor, initialisiert der Aufruf eine temporäre Variable vom Typ des Ziels. Das Ergebnis des Aufrufs (im Fall des Konstruktors die temporäre Variable) wird dann zur direkten Initialisierung des Objekts verwendet. Verwenden Sie den Compiler-Schalter -Vbo, um zum vorherigen Verhalten zurückzukehren.
  4. Für eine explizite Typumwandlung führt der Compiler nun die direkte Initialisierung einer temporären Variable durch.

Das folgende Beispiel zeigt das neue Verhalten:

  // In diesem Beispiel ist dst der Zieltyp und src der Ausgangstyp
  class A { };
  class V {
  public:
    V() { };
    V( const V & ) { }
    V( const A & ) { }
  };
  class G {
  public:
    G() { }
    operator V() { }
    operator A() { }
  };
  G g; V v;
  // Direkte Initialisierung
  // ==> Konstruktoren werden geprüft.
  V v9(g);
  // Beide Anweisungen wurden früher compiliert, erzeugen jetzt aber den Fehler:
  // Fehler E2015: Mehrdeutigkeit zwischen 'V::V(const V &)' und 'V::V(const A &)'

  // Umwandlung
  // (V)g wird als V tmp(g) behandelt: direkte Initialisierung von 'tmp'
  // ==> Konstruktoren werden geprüft.
  (V)g;
  static_cast<V>(g);
  // Beide Anweisungen wurden früher compiliert, erzeugen jetzt aber den Fehler:
  // Fehler E2015: Mehrdeutigkeit zwischen 'V::V(const V &)' und 'V::V(const A &)'

  // Kopierinitialisierung mit dst=V src=G
  // ==> Benutzerdefinierte Konvertierungssequenzen werden geprüft.
  V v4 = g;
  V v5 = G();
  // Beide Anweisungen werden jetzt compiliert, erzeugten früher aber den Fehler:
  // Fehler E2015: Mehrdeutigkeit zwischen 'V::V(const A &)' und 'V::V(const V &)'

  // Kopierinitialisierung mit dst=V src=G
  // ==> Konvertierende Konstruktoren von V werden geprüft.
  V v6 = (V)g;
  V v7 = V(g);
  // Beide Anweisungen wurden früher compiliert, erzeugen jetzt aber den Fehler:
  // Fehler E2015: Mehrdeutigkeit zwischen 'V::V(const V &)' und 'V::V(const A &)'

5.1 Konvertierung mittels benutzerdefinierter Operatoren

Der neue C++Builder 2007-Compiler stuft Konvertierungen mit benutzerdefinierten Operatoren oft als mehrdeutig ein. Ein Beispiel:

  class AnsiString
{
public:
    bool operator ==(const AnsiString& other);
    AnsiString(const wchar_t* src);
  };

  class Variant
  {
  public:
    operator AnsiString() const;/br>     operator wchar_t*() const;
    bool operator ==(const AnsiString& rhs) const
    { return static_cast<AnsiString>(*this) == rhs;}
  };

C++Builder-Anwender haben wahrscheinlich bemerkt, dass der obige Quelltext eine verkürzte Version der VCL-Klassen AnsiString und Variant ist. Frühere Versionen des Compilers riefen 'Variant' 'operator AnsiString() const' für 'static_cast<AnsiString>(*this)' auf. C++Builder 2007 verwendet 'Konvertierung mittels Konstruktor'. Weil Variant in mehrere Typen konvertiert werden kann, für die es AnsiString-Konstruktoren gibt, erzeugt der Compiler einen Mehrdeutigkeitsfehler.

Zum Beheben dieses Fehlers müssen Sie die Typumwandlung vermeiden:

bool operator ==(const AnsiString& rhs) const
{ return (*this) == rhs;}

Sie können den Operator auch explizit angeben:

bool operator ==(const AnsiString& rhs) const
{ return this->operator AnsiString() == rhs; }

5.2 Variant/OleVariant/AnsiString/WideString/TDateTime

Das oben beschriebene Problem mit einem benutzerdefinierten Konvertierungsoperator versus einer Konvertierung mittels Konstruktor kann in Konstrukten auftreten, die die VCL-Klassen Variant, OleVariant, AnsiString, WideString, TDateTime, Currency usw. betreffen. Die folgende Tabelle enthält Konstrukte, die jetzt Fehlermeldungen erzeugen, und die aktualisierte Syntax.

Früheres Konstrukt Aktualisiertes Konstrukt Hinweise
AnsiString test(OleVariant v) {
  AnsiString ret = (AnsiString) v;
  return ret;
}
AnsiString test(OleVariant v) {
  AnsiString ret = /*(AnsiString)*/ v;
  return ret;
}
Führen Sie für RHS keine Typumwandlung durch, wenn der Konvertierungsoperator in einer Zuweisung verwendet wird.
WideString test(OleVariant v) {
  WideString w(v);
  return w;
}
WideString test(OleVariant v) {
  WideString w = v;
  return w;
}
Verwenden Sie die Kopierinitialisierung anstelle des direkteren Konstruktors.

Die Änderung am Compiler, die die oben genannten Fehler bewirkt, hängt damit zusammen, wie der Compiler jetzt Initialisierungen und Konvertierungen behandelt.

Zurück zum Anfang

Befehlszeile

Sie können nun Projekte mit der ausführbaren Datei von MSBuild von der Befehlszeile aus erzeugen. Wählen Sie Start>Alle Programme>CodeGear RAD Studio>RAD Studio-Befehlszeile , um automatisch sowohl den Pfad zur ausführbaren Datei von MSBuild als auch die Umgebungsvariable für das Produkt zu setzen.

Die folgenden Umgebungsvariablen werden von der RAD Studio-Befehlszeile für die Verwendung der CodeGear RAD Studio-Tools gesetzt (speziell MSBuild):

   BDS=c:\Programme\CodeGear\RAD Studio\5.0
   FrameworkDir=c:\Windows\Microsoft.NET\Framework
   FrameworkVersion=v2.0.50727

Wenn Sie MSBuild in der Befehlszeile aufrufen möchten, aber die RAD Studio-Befehlszeile nicht verwenden, setzen Sie diese Umgebungsvariablen selbst.

Weitere Informationen über die Verwendung von MSBuild finden Sie, indem Sie im Index oder im Inhaltsverzeichnis der Online-Hilfe nach MSBuild suchen.

Zurück zum Anfang

Datenbanken

Upgrade von dbExpress für Delphi 2007 für Win32

Wenn Sie dbExpress mit Delphi 2007 für Win32 verwendet haben, und Sie für Delphi 2007 für Win32 ein Upgrade ausführen, brauchen Sie keine Quelltextänderungen vorzunehmen. Sie müssen aber Quelltext neu compilieren, der die Unit SQLExpr oder DbxCommon verwendet. Diese beiden Units wurden seit der ersten Auslieferung von Delphi 2007 für Win32 verändert.

Bekannte Probleme

  • Der neue MySQL dbExpress-Treiber, dbxmys30.dll, wurde mit LibMySQL.dll aus einer 5.0.xx-Server-Installation getestet. Wenn Sie dbExpress mit MySQL 4.0.xx einsetzen möchten, sollten Sie Ihre LibMySQL.dll auf eine 5.0.xx-Version aktualisieren oder den Treiber dbxmysA30.dll mit dbExpress verwenden. Die Verwendung einer älteren Version der LibMySQL.dll mit dem aktuellen dbExpress-Treiber für MySQL kann zu unerwartetem Verhalten führen.

  • Der Versuch, einen Tabellenknoten im Daten-Explorer unter Verwendung von LibMySQL.dll (Version 4.x) zu erweitern, führt zu der folgenden Fehlermeldung:

    "Attempted to read or write protected memory" ("Versuchte Lese- oder Schreiboperation in geschütztem Speicher")
    Um dies zu vermeiden, sollten Sie LibMySQL.dll auf eine 5.0.xx-Version upgraden.
  • Die folgenden Kombinationen wurden getestet:

    LibMySQL.dll (4.0.XX)DBXMysA30.dllMySQL 4.0.XX Server
    LibMySQL.dll (5.0.XX)DBXMys30.dllMySQL 4.0.XX Server
    LibMySQL.dll (5.0.XX)DBXMys30.dllMySQL 4.1.XX Server
    LibMySQL.dll (5.0.XX)DBXMys30.dllMySQL 5.0.XX Server
  • Wenn Sie den DBXMysA30-Treiber einsetzen möchten, können Sie die DBXMys30.dll in DBXMys30.dll.bkup und die DBXMysA30 in DBXMys30.dll umbenennen. Sie können stattdessen auch der Datei dbxdrivers.ini einen neuen Eintrag hinzufügen, mit dem Sie DBXMysA30.dll als LibraryName definieren.

Neue Features

dbExpress 4-Framework

Delphi-Datenbanktreiber-Framework. Hierbei handelt es sich um ein in Delphi geschriebenes, objektorientiertes Treiber-Framework.

Unterstützung für Delegattreiber. Ein Delegattreiber ist ein Treiber zwischen der Anwendung und dem eigentlichen Treiber. Delegattreiber ermöglichen eine Vor- und Nachverarbeitung aller public Methoden und Eigenschaften des dbExpress 4-Framework. Delegattreiber sind beim Verbindungs-Pooling, beim Erstellen von Treiberprofilen, bei der Ablaufverfolgung und beim Auditing hilfreich. Delegattreiber lassen sich einfach implementieren. Nähere Informationen dazu finden Sie in der Dokumentation am Beginn der Unit DBXCommon.

TDBXPool-Delegattreiber. Stellt das Verbindungs-Pooling für alle dbExpress-Treiber bereit.

TDBXTrace-Delegattreiber. Stellt erweiterte Ablaufverfolgungsmöglichkeiten bereit. Erzeugt Delphi-Quelltext für alle verfolgten Methoden und Eigenschaften.

Erweiterbare Anweisungen. Anweisungen, die keine SQL-Anweisungen oder Stored Procedures sind, werden durch Angabe einer benutzerdefinierten "Anweisungstyp"-Eigenschaft unterstützt. Diese Eigenschaft ist ein String, mit dem bei der Implementierung von Treibern und Delegattreibern eigene Anweisungstyp-Namespaces für benutzerdefinierte Anweisungen eingeführt werden können. Der TDBXPool-Delegattreiber nutzt dies zum Implementieren der Anweisung "show pools", die einen Reader mit Informationen über den aktuellen Status aller Verbindungs-Pools zurückgibt.

Quelltextdokumentation. Arbeitet mit der Symbolbeschreibung für alle public Methoden, Eigenschaften und Ereignisse. XML/HTML-Dokumentation kann auch mit der Delphi-Compileroption --doc erzeugt werden.

Einzelne Quelle. Der Quelltext von dbExpress 4 kann sowohl für Win32- als auch für .NET-Plattformen compiliert werden.

dbExpress 4-Quelltext. Der gesamte Quelltext für das dbExpress 4-Framework wird mitgeliefert.

Treiber mit dualen Interfaces. Alle CodeGear dbExpress-Treiber implementieren die älteren dbExpress 3- und die neueren dbExpress 4-Interfaces.

dbExpress 3-Adaptertreiber. Die DLL dbxadapter30.dll stellt ein dbExpress 4-Interface für vorhandene dbExpress 3-Treiber zur Verfügung. So können Anwendungen weiterhin ältere dbExpress 3-Treiber mit dbExpress 4 verwenden.

Beispiele
  • CTS. Certification Test Suite für das dbExpress 4-Framework. Hierbei handelt es sich um eine Testsuite zur Treiberkomplianz. Es beinhaltet auch Beispiele für die direkte Verwendung des dbExpress 4-Framework.
  • Delegaten. Dieses Beispiel demonstriert die einfache Anwendung und die Leistungsfähigkeit von Delegattreiberimplementierungen, wie TDBXTrace und TDBXPool.

Single Source für dbExpress VCL-Komponenten

Die einheitliche Quelltextbasis ist viel einfacher zu lesen, zu debuggen und zu warten.

VCL greift nun über das neue dbExpress 4-Framework auf die dbExpress-Datenbanktreiber zu.

Neue Datenbanktreiber

  • InterBase 2007
  • MySQL 4.1 und 5.0

Neue Unicode-fähige Datenbanktreiber

  • InterBase 2007
  • MySQL 4.1 und 5.0
  • Oracle
Bitte beachten Sie, dass die Unicode-Unterstützung für MS-SQL bereits im Produkt enthalten war.

dbExpress Unicode- und ANSI-Treiber

Mit dbExpress werden sowohl Unicode- als auch ANSI-Treiber ausgeliefert. Die Unicode-Version ist dbxoraW30.dll und die ANSI-Version dbxora30.dll.

Datenbankänderungen

dbExpress 2.5 wird nicht unterstützt

dbExpress 2.5 wird in diesem Release nicht mehr unterstützt.

Neuer MySQL dbExpress-Treiber

Der neue MySQL-Treiber heißt dbxmys30.dll. Dieser Treiber unterstützt Unicode-Strings. Er funktioniert nur mit der Version der MySQL-DLL libmysql.dll für die MySQL 4.1- und 5.0-Server. dbxmys30.dll funktioniert nicht mit älteren Versionen von libmysql.dll.

Der alte MySQL-Treiber ist weiterhin im Produkt enthalten, wurde aber in dbxmysA30.dll umbenannt. Das "A" wurde dem DLL-Namen hinzugefügt, um anzuzeigen, dass dieser alte Treiber nur ASCII-Strings und kein Unicode unterstützt. dbxmysA30.dll kann nur mit Versionen der MySQL-DLL libmysql.dll verwendet werden, die MySQL-Server der Version 4.0 und früher unterstützen.

Delegattreiber

Das Produkt enthält zwei Delegattreiber:
  • DBXTrace
  • DBXPool

dbExpress VCL-Komponenten

Die meisten Anwendungen sind von den Änderungen der dbExpress VCL nicht betroffen. Es gibt aber einige Methoden, Eigenschaften, Ereignisse, Konstanten und Aufzählungen, die entfernt oder durch äquivalente Funktionen ersetzt wurden. Diese Änderungen waren aus folgenden Gründen erforderlich:
  • Wechsel zu dem mehr Delphi-ähnlichen dbExpress 4-Framework anstelle dem eher C-ähnlichen COM-Interfaces, die dbExpress 3 verwendete.
  • Single Source für die dbExpress VCL-Komponenten. Es gibt jetzt einen höheren Kompatibilitätsgrad zwischen den nativen und den .NET-Versionen der dbExpress VCL-Komponenten.
Bekannte Kompatibilitätsprobleme:
  • Die Unit dbExpress ist veraltet und leer und daher nicht mehr erforderlich. Der Inhalt der Unit wurde überwiegend in die Units DBXCommon oder SQLExpr verlagert.
  • Praktisch wurden alle Klassen, Interfaces, Aufzählungen und Konstanten aus der Unit dbExpress entfernt, umbenannt oder ersetzt. Umbenannte oder ersetzte Elemente befinden sich in den interface-Abschnitten der Units DBXCommon oder SQLExpr.
  • Statische Treiberbibliotheken werden nicht mehr unterstützt. Diese statischen Treiberbibliotheken waren in Delphi-Units eingebunden, wodurch native Treiber in eine ausführbare Delphi-Datei gelinkt werden konnten. Diese Delphi-Units sind: DBExpasa, DBExpDB2, DBExpInf, DBExpINT, DBExpMSS, DBExpMYS, DBExpMySQL, DBExpORA und DBExpt.

Deployment von dbExpress-Anwendungen für die Win32-Plattform

Verwendung von Packages

Die Option Laufzeit-Packages verwenden (Projekt | Optionen | Packages) muss aktiviert sein. DbxCommonDriver100.bpl muss mit Ihrer Anwendung weitergegeben werden. Wenn Ihre Anwendung DBX*.dll dbExpress-Treiber für das dynamische Linken verwendet, müssen diese wie bei früheren Versionen auch weitergegeben werden.

Kompatibilität des Unit-Interface

Überwiegend wurde in dem Produkt die Unit-Interface-Kompatibilität mit BDS2006 beibehalten. In drei Units durchbricht die dbExpress-VCL diese Kompatibilität: SQLExpr, DBXpress und SQLConst. Nur die Unit SQLExpr enthält Komponenten. DBXpress wird stufenweise abgeschafft. Um Konflikte mit der BDS2006-Version von dbExpress100.bpl zu vermeiden, wurde dbExpress100.bpl temporär in dbExpress4100.bpl umbenannt. Die "4" zeigt an, dass diese Version des dbExpress-Package für die Version 4 des dbExpress-Treibers bestimmt ist. Wenn die Version 11.0 der VCL ausgeliefert wird, wird zur normalen VCL-Namenskonvention zurückgekehrt, und dbExpress4100.bpl wird in dbExpress110.bpl umbenannt.

Unterstützte Server

dbExpress

  • InterBase 2007, 7.5.1, 7.1*, 7.0*, 6.5* (Alle Editionen) (Treiber dbxINT30.dll, Client GDS32.DLL)
  • Adaptive Sybase Anywhere 9, 8* (Ent) (Treiber dbxASA30.dll, Client dbodbc9.dll)
  • DB2 UDB 8.x, 7.x* (Ent) (Treiber dbxDB230.dll, Client db2cli.dll)
  • Informix 9.x (Ent) (Treiber dbxINF30.dll, Client isqlb09a.dll)
  • MSSQL 2000, 2005 (Ent) (Treiber dbxMSS30.dll, Client oledb.dll)
  • MySQL 4.0.24 (Alle Editionen) (Treiber dbxMYSA30.dll, Client libmysql.dll)
    Hinweis: Keine Änderung von dbxMYS30.dll aus Delphi2006. Die Datei wurde umbenannt.
  • MySQL 5.0.27, 4.1.22* (Alle Editionen) (Treiber dbxMYS30.dll, Client libmysql.dll)
  • Oracle 10g, 9.2.0*, 9.1.0* (Ent) (Treiber dbxora30.dll, Treiber dbxoraW30.dll, Client OCI.DLL)
  • Sybase 12.5 (Ent) (Treiber dbxASE30.dll, Client libct.dll & libcs.dll)

* Der Treiber ist für diese Datenbankversion nicht vollständig zertifiziert.

Zurück zum Anfang

Debugger

  • Der Linker entfernt automatisch nicht verwendete Funktionen aus allen Units, wenn die ausführbare Datei generiert wird. Um sicherzustellen, dass dem Evaluator beim Debuggen alle Funktionen zur Verfügung stehen, führen Sie folgende Schritte durch:

    • Bei verwaltetem Code: Fügen Sie der Datei Borland.Delphi.dll in der Projektverwaltung eine Assemblierungsreferenz hinzu, und achten Sie darauf, dass die Option "Units verknüpfen" für diese Referenz auf "false" gesetzt ist.
    • Bei nativem Code: Erstellen Sie Ihre Anwendung mit Laufzeit-Packages, so dass sie RTL100.BPL benötigt.
  • Information über das Debuggen von ASP.NET-Anwendungen, die IIS auf Vista verwenden, finden Sie unter ASP.NET.

  • Das Einfügen eines Datenhaltepunkts in den Quelltext könnte zu einem Fehlverhalten des Programms führen. Wenn Sie beispielsweise einen Datenhaltepunkt für einen VMT-Slot definieren, erfolgt u.U. ein Sprung zu einer falschen Position (das "letzte" Byte der Adresse wird mit 0xcc überschrieben).
  • Die Installation von System Mechanic 7 Pro deaktiviert die Funktionalität des integrierten Debuggers. Der Debugger wird dadurch sofort beendet und in der Ansicht "Ereignisprotokoll" wird eine Diagnosemeldung angezeigt. Die Debugger-Funktionalität kann wiederhergestellt werden, indem die Ausführung von "iolo DMV Service" über den Dienste-Manager deaktiviert wird.

Zurück zum Anfang

Dokumentation

  • Der Hilfe-Viewer, auf den Sie über das Produkt zugreifen können, beinhaltet immer die lokale Hilfe für das Produkt. Sie können aber auch andere Hilfesysteme (z. B. MSDN Online) angeben, um sie in Such- und Indexfunktionen zu verwenden. Sie können die Suche auf das lokale, von CodeGear bereitgestellte Hilfesystem beschränken. Außerdem können Sie einstellen, ob der Hilfe-Viewer zuerst die lokale oder zuerst die Online-Hilfe anzeigen soll.

    Um die Quelle für den Hilfe-Viewer festzulegen, wählen Sie Tools > Optionen > Hilfe > Optionen. Mit der zweiten Option "Zuerst lokal, dann online" veranlassen Sie den Browser, nach den geeigneten CodeGear-Hilfedateien zu suchen und zuerst die lokalen, dann die Online-Ergebnisse anzuzeigen.
  • Wenn Sie Package-Fehler entdecken und die Online-Hilfe für die IDE nicht funktioniert, könnte die Ursache des Problems in einer nicht vollständigen Installation des .NET 2.0 Framework SDK liegen. Der vom Produkt verwendete Hilfe-Viewer ist Bestandteil des .NET 2.0 Framework SDK, das zusammen mit der Produktdokumentation vollständig installiert werden sollte.

    So beheben Sie dieses Problem:
    1. Deinstallieren Sie das .NET-Framework SDK, das sich im Verzeichnis C:\Programme\Microsoft.NET\SDK befindet.
    2. Deinstallieren Sie das Produkt.
    3. Starten Sie Ihr System neu.
    4. Installieren Sie das Produkt erneut. Dadurch wird auch das .NET 2.0 Framework SDK mit allen Grundvoraussetzungen installiert.

Zurück zum Anfang

Sprachspezifische Hinweise

  • Haltepunkte werden nicht erkannt und als ungültig markiert, wenn der Projektpfad einen Quelldateinamen mit Zeichen einer nicht-römischen Länderkennung enthält.
  • Bei Verwendung des Eingabemethodeneditors (IME) kommt das System u.U. längere Zeit (ca. 5 Minuten) zum Stillstand. Danach wird eine Fehlermeldung angezeigt. Dieses Problem wird durch einen Fehler im .NET-Framework verursacht und tritt nur zwei- oder dreimal auf. Es kann in allen Sprachen auftreten.

    Erstellen oder ändern Sie den folgenden Registrierungseintrag, um diesen Fehler zu vermeiden:

    HKEY_CURRENT_USER\Console\LoadConIme

    Dieser Eintrag hat den Typ REG_DWORD, und Sie sollten seinen Wert auf 0 setzen.

Zurück zum Anfang

Together

  • In Delphi 2007 für Win32 und Delphi 2007 für .NET unterstützt Together das vollständige Set der Modellierungsfunktionen, die in der Online-Hilfe beschrieben sind. In C++Builder 2007 unterstützt das integrierte Modellierungs-Tool Together nur die schreibgeschützte Modellierung, d. h. die Code-Visualisierung ohne Quelltexterzeugung.
  • Wenn bei Ihrem C++-Projekt die Together-Code-Visualisierung nicht funktioniert, fügen Sie in der Projektverwaltung Ihrem Projekt die Header-Dateien (.h oder .hpp) hinzu. Dadurch sollten die Informationen den Together-Modellierungs-Tools zur Verfügung stehen.
  • Nachdem für ein Projekt die Together-Unterstützung entfernt wurde, ist es nicht möglich, die Diagrammdateien über die Projektverwaltung zu löschen. Wählen Sie dazu im Hauptmenü der IDE den Befehl Projekt | Aus dem Projekt entfernen. Daraufhin wird eine Liste der Diagrammdateien angezeigt. Sie können diese Dateien nun auswählen und löschen.
  • Falls bei der Auswahl von Together-Refactorings die Modellierungsunterstützung deaktiviert ist, werden Sie in einer Meldung gefragt, ob Sie die Modellierungsunterstützung für das Projekt aktivieren möchten. Sie müssen diese Frage mit "Ja" beantworten, damit Sie Together-Refactorings verwenden können.

Zurück zum Anfang

VCL/RTL

  • Für Windows Vista wurden drei neue VCL-Dialogfelder hinzugefügt:
    • TCustomFileOpenDialog
    • TCustomFileSaveDialog
    • TTaskDialog
    Diese Komponenten dienen als Wrapper für Windows Vista-Dialogfelder. Wenn die globale Variable UseLatestCommonDialogs auf true gesetzt ist, werden auf Vista-Systemen automatisch Vista-Dialogfelder verwendet.
  • Zu TApplication wurde die neue Eigenschaft MainFormOnTaskBar hinzugefügt. Die Standardeinstellung dieser Eigenschaft ist für neue Anwendungen True und für vorhandene Anwendungen False. Diese Eigenschaft steuert, wie Taskleisten-Schaltflächen von Fenstern von der VCL behandelt werden. Diese Eigenschaft kann für ältere Anwendungen angewendet werden, sie wirkt sich aber auf die Z-Reihenfolge Ihres Hauptformulars aus. Sie sollten daher sicherstellen, dass für das alte Verhalten keine Abhängigkeiten vorhanden sind. MainFormOnTaskBar sollte beim Start gesetzt werden und während der gesamten Anwendungsdauer erhalten bleiben. Das Ändern dieser Eigenschaft zur Laufzeit könnte unerwartetes Verhalten verursachen. Der Hauptgrund für diese Änderung war die bessere Unterstützung einiger neuer Features von Windows Vista.

Neue Komponenten erstellen und in ein neues Package installieren

Mit den folgenden Schritten erstellen Sie eine neue Komponente und installieren sie in der Tool-Palette:
  1. Starten Sie RAD Studio 2007.
  2. Wählen Sie Datei > Neu > Package.
  3. Wählen Sie Datei > Speichern unter, und geben Sie dem Package einen Namen.
  4. Klicken Sie mit der rechten Maustaste auf den Package-Knoten, und wählen Sie im Kontextmenü den Befehl Option.
  5. Geben Sie eine Beschreibung für das Package ein. Die Beschreibung wird im Dialogfeld Packages installieren angezeigt.
  6. Wählen Sie Komponenten > Neue VCL-Komponente. Der Experte für neue VCL-Komponenten (Beschreibung folgt) wird angezeigt.
  7. Wählen Sie TButton als Vorfahr, und klicken Sie auf OK.
  8. Übernehmen Sie alle Voreinstellungen, und klicken Sie auf Weiter.
  9. Wählen Sie Ansicht > Projektverwaltung, klicken Sie mit der rechten Maustaste auf "Package1", und wählen Sie Installieren.

Um das Entwurfszeit-Package einer vorhandenen .PAS-Datei hinzuzufügen, die Komponenten enthält, klicken Sie mit der rechten Maustaste auf den Knoten "Enthält" unter Ihrem Package. Wählen Sie Hinzufügen.

Vorhandene Komponenten in ein neues Package installieren

Führen Sie die obigen Schritte durch. Öffnen Sie jedoch in Schritt 4 die .PAS-Datei mit den Komponenten, und fügen Sie sie dem Knoten "Enthält" Ihres Package hinzu.

Komponenten in ein vorhandenes Package installieren

Wenn Sie bereits ein Entwurfszeit-Package erstellt und installiert haben, können Sie mit den folgenden Schritten eine neue Komponente hinzufügen:
  1. Wählen Sie Komponenten > Packages installieren.
  2. Suchen Sie im Listenfeld Entwurfs-Packages nach dem gewünschten Package, und wählen Sie es aus.
  3. Klicken Sie auf die Schaltfläche Bearbeiten. Sie werden aufgefordert, das Dialogfeld zu schließen und das Package als Projekt zu öffnen.
  4. Wählen Sie Ansicht > Projektverwaltung.
  5. Erweitern Sie den Package-Knoten, klicken Sie mit der rechten Maustaste auf den Knoten "Enthält" unter dem Package, und wählen Sie Hinzufügen.
  6. Fügen Sie die vorhandene .PAS-Datei hinzu, oder wählen Sie Komponenten > Neue VCL-Komponente. Führen Sie die Schritte der obigen Erstellungs- und Installationsanleitung durch.
  7. Klicken Sie in der Projektverwaltung mit der rechten Maustaste auf den Package-Knoten, und wählen Sie Compilieren. Das Entwurfszeit-Package wird nun neu erstellt und installiert.

Vorhandene Entwurfszeit-Packages installieren

Mit den folgenden Schritten können Sie vorhandene Komponenten-Packages in der Palette installieren:
  1. Wählen Sie Komponenten > Packages installieren.
  2. Klicken Sie auf Hinzufügen, und wählen Sie alle Entwurfszeit-Packages aus, die Sie installieren möchten.
  3. Klicken Sie auf OK.

Experte für neue VCL-Komponenten

Der Experte für neue VCL-Komponenten vereinigt Entwurfszeit- und Laufzeit-Code in einer einzigen Unit. Der Laufzeit-Code ist der Code, der die Komponente selbst implementiert. Der Entwurfszeit-Code ist die Prozedur "Register" mit dem Aufruf von "RegisterComponents", der entfernt und in einer anderen Unit abgelegt werden sollte, die zu einem Entwurfszeit-Package gehört.

Im ersten Szenario wäre es ratsam, ein zweites, reines Entwurfszeit-Package zu erstellen und den Code in der beschriebenen Art und Weise aufzuteilen. Außerdem sollten Sie Ihre Packages deutlich als "Entwurfszeit" und "Laufzeit" kennzeichnen. Verwenden Sie dazu die Optionen im Dialogfeld Projektoptionen. Im Allgemeinen sollten Sie Entwurfszeit- und Laufzeit-Code nicht im selben Package ablegen. Entwurfszeit-Code wird zur Laufzeit nicht benötigt. Er enthält neben Eigenschafts- und/oder Komponenteneditoren verschiedene Registrierungsaufrufe, die nur von Bedeutung sind, wenn das Package in der IDE installiert wird.

Zurück zum Anfang

SOAP Server

Die Standard-SOAP-Server-Anwendung von Delphi mit der Klasse Web App Debugger kann nicht compiliert werden. Es gibt zwei mögliche Lösungen für dieses Problem:

  • Nehmen Sie $(BDS)\Lib\Indy9 in den Bibliothekspfad auf, und entfernen Sie $(BDS)\Lib\Indy10. Das bedeutet aber, dass Ihre Anwendung Indy 9 verwenden muss.
  • Compilieren Sie IndySockTransport und sockapp, und platzieren Sie sie in $(BDS)\Lib\Indy10.

Zurück zum Anfang

Copyright 2007 CodeGear Software. Alle Rechte vorbehalten.


공개 일자: : 9/11/2007 11:09:24 AM

서버 응답: SC4

Copyright© 1994 - 2009 Embarcadero Technologies, Inc. All rights reserved.