Release-Hinweise für Delphi 2007 für Win32 und C++Builder

By: Masahiro Arai

Abstract: 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.

    Release-Hinweise für Delphi® 2007 für Win32® und C++Builder®

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.

In diesem Dokument wird der Begriff "das Produkt" verwendet, wenn sich die Informationen auf Delphi 2007 für Win32 und C++Builder 2007 beziehen.

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

    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. Diese beiden Dateien werden standardmäßig an folgender Position gespeichert:

    C:\Programme\CodeGear\RAD Studio\5.0\install.htm C:\Programme\CodeGear\RAD Studio\5.0\license.rtf

    Die Datei install.htm gibt beispielsweise den erforderlichen freien Speicherplatz für die Installation von C++Builder an.

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

    • Installieren Sie Borland Developer Studio 2006 nicht nach C++Builder 2007. Sie können sonst BDS 2006 nicht mehr starten. Nach Beendigung 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. Zur Lösung dieses Problems gehört, dass für das Laden dieser Assemblierung .NET 1.1 verwendet werden muss. 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 nicht nach C++Builder 2007 von einer Original-Release-DVD (vor Update 1). Ansonsten wird keines der beiden Produkte installiert. Wählen Sie stattdessen Start | Alle Programme | CodeGear RAD Studio | Ändern, reparieren, deinstallieren, dann Upgrade, geben Sie Ihre Delphi-Seriennummer ein, und führen Sie die weiteren Schritte zur Installation von Delphi 2007 für Win32 Update 1 aus.

    • Deinstallieren Sie Delphi 2007 für Win32 nicht, bevor Sie C++Builder 2007 und das Update 1 von Delphi 2007 für Win32 installiert haben. Sie können ansonsten nur auf Delphi, nicht aber auf C++Builder zugreifen. Zur Lösung dieses Problems müssen Sie alle Registrierungsschlüssel in HKCU löschen.
  • Das Installationsprogramm gibt keine Warnung aus, wenn nicht genügend freier Speicherplatz für die Installation des Produkts vorhanden ist. Die Installation von C++Builder erfordert etwa 2 GB freien Festplattenspeicher auf Laufwerk C: (auch wenn Sie das Produkt auf einem anderen Laufwerk installieren). Wenn zu wenig Speicherplatz vorhanden ist, könnte das Installationsprogramm blockieren.

  • Bei der Deinstallation von Delphi 2007 werden einige Systemdateien/einstellungen entfernt. Dies verhindert eine folgende Deinstallation oder Reparatur von .NET 2.0 bis zu einem 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 Komponente>Packages installieren.

Zurück zum Anfang

    Allgemeine Hinweise

  • Die Demos für beide Produkte 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 in dem 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 Komponente>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

    Dies gilt für beide Produkte.

  • 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. English 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

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*". Ansonsten 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. Setzen Sie zur Lösung dieses Problems im Dialogfeld Start>Parameter die Option Host-Anwendung auf "C:\windows\system32\regsvr32.exe" und Parameter auf <ProjektName>.

Zurück zum Anfang

    C++Builder-Compiler

    Binäre Inkompatibilität mit früheren Versionen des C++-Compilers

Die C++-Laufzeitbibliotheken wurden erweitert, geändert und auf Dinkumware 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.

    C++-Compiler ist strikter

Der mit C++Builder 2007 ausgelieferte C++-Compiler ist strikter als die früheren Versionen. Die Compilierung von Quelltext, der in früheren Versionen von C++Builder keine Fehler erzeugte, könnte mit C++Builder 2007 fehlschlagen. Dieser Abschnitt listet einige Bereiche auf, in denen der Compiler strikter geworden ist. 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 bitte, dass es meist viele Möglichkeiten gibt, fehlerhaften Quelltext zu ändern. Die geeignete Methode hängt vom Zweck des ursprünglichen Quelltextes ab.

    Typumwandlung und Referenzen

Frühere Versionen des Borland C++-Compilers ließen eine Typumwandlung zu, wenn der Typ eines Arguments nicht mit dem Typ übereinstimmte, der für einen Referenzparameter erwartet wurde. Sehen Sie sich dazu das folgende Beispiel an.

int takesLongRef(long& l);
int takesUnsignedPtr(unsigned long* psize) {
  return takesLongRef((long)*psize);
}

In C++Builder 2007 erzeugt der obige Quelltext folgende 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));
}

Warnung: Wenn Sie den Schalter -Vb (rückwärtskompatibel) aktivieren, wird der ursprüngliche Quelltext compiliert. Der Compiler übergibt aber eine temporäre Variable, nicht *psize, an takesLongRef, was zu einem Ergebnis führt, das wahrscheinlich nicht das beabsichtigte ist.

    Temporäre Variablen und Referenzen

Frühere Versionen des Borland C++-Compilers ließen die Verwendung von temporären Variablen zu, wenn eine Referenz erwartet wurde. Zum Beispiel:

#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 folgende zwei 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 in eine const-Referenz wie folgt ändern:

void Func(const WideString& wref);

    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)

und ändern Sie so, dass sie ein const Variant& aufnehmen kann:

  AnsiString VarToAnsiStr (const Variant &V, TFieldType DataType)

    Mehrdeutigkeit

Einer der Bereiche, in dem sich der C++Builder 2007-Compiler am meisten von der früheren Version unterscheidet, ist das Erkennen von Mehrdeutigkeit. Konstrukte, die früher zulässig waren, könnten jetzt als mehrdeutig eingestuft werden. Dies erfordert, dass Sie den Quelltext ändern, um dessen Zweck zu klären. Die folgenden Abschnitte enthalten einige Fälle, die als mehrdeutig gekennzeichnet werden.

    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;
  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 Heben 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; }

    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.

    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. Sehen Sie sich dazu das folgende Beispiel an.

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

Der obige Quelltext erzeugt einen Compiler-Fehler:

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, der aufgerufen werden soll. Zum Beispiel:

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

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, besuchen Sie die Website von Microsoft unter (http://www.microsoft.com/downloads/details.aspx?familyid=6ebcfad9-d3f5-4365-8070-334cd175d4bb).
  • 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

    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. 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".
    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.

Single Source. 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.
  • Delegates. 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

  • MySQL 4.1 und 5.0
  • InterBase 2007

    Neue Unicode-fähige Datenbanktreiber

  • MySQL 4.1 und 5.0
  • InterBase 2007
  • 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, dbxmys30.dll, unterstützt Unicode-Strings. Dieser Treiber arbeitet nur mit der Version der MySQL-DLL libmysql.dll für die MySQL 4.1- und 5.0-Server. dbxmys30.dll arbeitet 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. Die dbxmysA30.dll kann nur für Versionen der MySQL-DLL libmysql.dll verwendet werden, die MySQL-Server der Version 4.0 und niedriger 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 den drei Units SQLExpr, DBXpress und SQLConst durchbricht die dbExpress VCL diese Kompatibilität. 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 7.5.1, 2007, 6.5*, 7.0*, 7.1* (Alle Editionen) (Treiber dbxINT30.dll, Client GDS32.DLL)
  • Oracle 10g, 9.1.0*, 9.2.0* (Ent) (Treiber dbxora30.dll, Treiber dbxoraW30.dll, Client OCI.DLL)
  • DB2 UDB 8.x, 7.x* (Ent) (Treiber dbxDB230.dll, Client db2cli.dll)
  • MSSQL 2000, 2005 (Ent) (Treiber dbxMSS30.dll, Client oledb.dll)
  • Informix 9.x (Ent) (Treiber dbxINF30.dll, Client isqlb09a.dll)
  • Adaptive Sybase Anywhere 9, 8* (Ent) (Treiber dbxASA30.dll, Client dbodbc9.dll)
  • Sybase 12.5 (Ent) (Treiber dbxASE30.dll, Client libct.dll & libcs.dll)
  • MySQL 5.0.27, 4.1.22* (Alle Editionen) (Treiber dbxMYS30.dll, Client libmysql.dll)
  • MySQL 4.0.24 (Alle Editionen) (Treiber dbxMYSA30.dll, Client libmysql.dll)
  • Hinweis: Keine Änderung der dbxMYS30.dll aus Delphi2006. Die Datei wurde umbenannt.

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

Zurück zum Anfang

    Debugger

  • 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

  • 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 von den Produkten verwendete Hilfe-Viewer ist Bestandteil des .NET 2.0 Framework SDK. Wenn das .NET-Framework explizit installiert ist, sollten Sie alle drei verfügbaren Optionen (einschließlich der Produktdokumentation) überprüfen.

    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.
  • Wenn Sie, um Hilfe zu erhalten, F1 drücken, erscheint möglicherweise zuerst ein Dialogfeld, in dem Sie auswählen müssen, ob Sie die Online-Hilfe als Hauptquelle oder die lokale Hilfe als Hauptquelle oder gar keine Hilfe verwenden möchten. Wählen Sie die zweite Option (lokale Hilfe als Hauptquelle verwenden), damit der Browser nach den korrekten Hilfedateien sucht.

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 C++Builder 2007 unterstützt das integrierte Modellierungs-Tool Together nur die schreibgeschützte Modellierung. Das bedeutet, Code-Visualisierung ohne Quelltexterzeugung. In Delphi 2007 für Win32 unterstützt Together das vollständige Set der Modellierungsfunktionen, die in der Online-Hilfe beschrieben sind.
  • 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.

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:

  • Beziehen Sie $(BDS)\Lib\Indy9 in den Bibliothekspfad ein, 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.




Server Response from: ETNASC04