Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   DeveloperExpress Komponenten von D5 nach D7 (https://www.delphipraxis.net/212338-developerexpress-komponenten-von-d5-nach-d7.html)

KlausV 27. Jan 2023 11:57

DeveloperExpress Komponenten von D5 nach D7
 
Hallo Zusammen,
ich kämpfe mit der Umstellung einer Anwendung von D5 nach D7 (nicht fragen wieso, ist leider so).
Wir haben damals für D5 eine Bibliothek (BPL) von DeveloperExpress erworben, inkl. der Sourcen.
Im Verzeichnis gibt es zwei DPK Files mit den Sourcen.
Die eine DPK Datei habe ich geöffnet und alle PAS Files nun kompiliert. Nun geht es darum in der 2. DPK die Umgebung der Komponenten zu erzeugen und da hänge ich nun.
Es wird vieles mit $IFDEF DELPHI6 geprüft, wie auch in dem unteren genannten Beispiel:
Wie ist hier zu verfahren?
DELPHI6 durch DELPHI7 ersetzen und evt. fehlende Klassen ersetzen?
Als zweites bekomme ich einen Fehler, weil TFORMDESIGNER nicht gefunden wird.


function TdxfComboBoxItemsProperty.GetValue: string;
begin
Result := Format('(%s)', [TStrings.ClassName]);
end;

{TdxfRealDesigner}
procedure TdxfRealDesigner.SelectComponent(Instance: TPersistent);
begin
{$IFDEF DELPHI6}
if(FDesigner <> nil) then
FDesigner.SelectComponent(Instance);
{$ELSE}
with {$IFDEF DELPHI4}IFormDesigner{$ELSE} TFormDesigner{$ENDIF}(GetParentForm(TControl(Instance)).Designe r) do
{$IFDEF DELPHI3}SelectComponent(Instance){$ELSE}SelectComp onent(TComponent(Instance)){$ENDIF};
{$ENDIF}
end;

{$IFDEF DELPHI6}
procedure TdxfRealDesigner.ItemDeleted(const ADesigner: IDesigner; AItem: TPersistent);
begin
end;
procedure TdxfRealDesigner.ItemInserted(const ADesigner: IDesigner; AItem: TPersistent);
begin
end;
procedure TdxfRealDesigner.ItemsModified(const ADesigner: IDesigner);
begin
end;
procedure TdxfRealDesigner.SelectionChanged(const ADesigner: IDesigner; const ASelection: IDesignerSelections);
begin
FDesigner := ADesigner;
end;

procedure TdxfRealDesigner.DesignerOpened(const Designer: IDesigner; AResurrecting: Boolean);
begin
FDesigner := Designer;
end;

procedure TdxfRealDesigner.DesignerClosed(const Designer: IDesigner; AGoingDormant: Boolean);
begin
FDesigner := nil;
end;
{$ENDIF}


Danke schon mal.
Gruß Klaus

dataspider 27. Jan 2023 12:23

AW: DeveloperExpress Komponenten von D5 nach D7
 
Gibt es .INC Dateien?
Bei neueren DevExpress steht dann so was drin (cxVer.inc):
Delphi-Quellcode:
{$IFDEF VER150} { Borland Delphi 7.0 }
  {$DEFINE DELPHI4}
  {$DEFINE DELPHI5}
  {$DEFINE DELPHI6}
  {$DEFINE DELPHI7}
{$ENDIF}
Dann sollte es kein Problem sein...

Frank

KlausV 27. Jan 2023 12:34

AW: DeveloperExpress Komponenten von D5 nach D7
 
Hallo Frank,
ja, es gibt eine INC Datei (dxFLVer.inc).
Code:
{$B-} {- Complete Boolean Evaluation }
{$R-} {- Range-Checking }
{$T-} {- Typed @ operator }
{$X+} {- Extended syntax }
{$P+} {- Open string params }
{$J+} {- Writeable structured consts }
{$H+} {- Use long strings by default }

{$IFNDEF VER80}
 {$IFNDEF VER90}
  {$IFNDEF VER93}
    {$DEFINE DELPHI3} { Delphi 3.0 or higher }
  {$ENDIF}
 {$ENDIF}
{$ENDIF}

{$IFDEF VER120} { Delphi 4.0 }
  {$DEFINE DELPHI4}
{$ENDIF}

{$IFDEF VER110} { Borland C++Builder 3.0 }
  {$DEFINE CBUILDER3}
  {$ObjExportAll On}
{$ENDIF}

{$IFDEF VER125} { Borland C++Builder 4.0 }
  {$DEFINE CBUILDER3}
  {$DEFINE DELPHI4}
  {$DEFINE CBUILDER4}
  {$ObjExportAll On}
{$ENDIF}

{$IFDEF VER130} { Delphi 5.0 }
  {$IFDEF BCB} { Borland C++Builder 5.0 }
    {$DEFINE CBUILDER3}
    {$DEFINE CBUILDER4}
    {$DEFINE CBUILDER5}
    {$ObjExportAll On}
  {$ENDIF}
  {$DEFINE DELPHI4} 
  {$DEFINE DELPHI5}
{$ENDIF}

{$IFDEF VER140} { Borland Delphi 6.0 }
  {$DEFINE DELPHI4}
  {$DEFINE DELPHI5}
  {$DEFINE DELPHI6}
{$ENDIF}
D.h. ich packe das hier dazu:
{$IFDEF VER150} { Borland Delphi 7.0 }
{$DEFINE DELPHI4}
{$DEFINE DELPHI5}
{$DEFINE DELPHI6}
{$DEFINE DELPHI7}
{$ENDIF}

Aber wie ist das mit den Prüfungen auf Delphi 6 zu verstehen? Die greifen dann ja nur, wenn D6 installiert ist, oder?

Alter Mann 27. Jan 2023 12:45

AW: DeveloperExpress Komponenten von D5 nach D7
 
Hallo,

hast du diese Datei(en)?
Code:
...\JEDIVisualComponentLibraryJVCL-3.8\archive\JvTimerListForm.* (pas | dfm)
...\JEDIVisualComponentLibraryJVCL-3.8\common\JVCL.INC
Dann hast du auch die Lösung (ist nur eine Leseübung)

KlausV 27. Jan 2023 12:51

AW: DeveloperExpress Komponenten von D5 nach D7
 
Zitat:

Zitat von Alter Mann (Beitrag 1517947)
Hallo,

hast du diese Datei(en)?
Code:
...\JEDIVisualComponentLibraryJVCL-3.8\archive\JvTimerListForm.* (pas | dfm)
...\JEDIVisualComponentLibraryJVCL-3.8\common\JVCL.INC
Dann hast du auch die Lösung (ist nur eine Leseübung)

nein, die gibt es nicht.

BerndS 27. Jan 2023 13:00

AW: DeveloperExpress Komponenten von D5 nach D7
 
Da deine Quellen der Komponenten kein D5 oder größer kennt reicht hier:
Delphi-Quellcode:
{$IFDEF VER150} { Borland Delphi 7.0 }
{$DEFINE DELPHI4}
{$ENDIF}

KlausV 27. Jan 2023 13:07

AW: DeveloperExpress Komponenten von D5 nach D7
 
Zitat:

Zitat von BerndS (Beitrag 1517954)
Da deine Quellen der Komponenten kein D5 oder größer kennt reicht hier:
Delphi-Quellcode:
{$IFDEF VER150} { Borland Delphi 7.0 }
{$DEFINE DELPHI4}
{$ENDIF}

Sorry verstehe nicht, es wird doch Delphi6 auch abgefragt und die Komponenten sind für D5 entwickelt!

dataspider 27. Jan 2023 13:08

AW: DeveloperExpress Komponenten von D5 nach D7
 
Richtig, Delphi 4 - 6 musst du eintragen...
Delphi-Quellcode:
{$IFDEF VER150} { Borland Delphi 7.0 }
  {$DEFINE DELPHI4}
  {$DEFINE DELPHI5}
  {$DEFINE DELPHI6}
{$ENDIF}
Frank

dataspider 27. Jan 2023 13:13

AW: DeveloperExpress Komponenten von D5 nach D7
 
Zitat:

Zitat von KlausV (Beitrag 1517945)
Aber wie ist das mit den Prüfungen auf Delphi 6 zu verstehen? Die greifen dann ja nur, wenn D6 installiert ist, oder?

Nein, wenn in der INC steht:
Delphi-Quellcode:
{$DEFINE DELPHI6}
dann wird im Code in

Delphi-Quellcode:
{$IFDEF DELPHI6}
  // Code
{$ENDIF}
kompiliert...

Oder einfacher:
In der INC: Wenn Delphi - Version Delphi 7 ist, dann definiere Delphi 6 (oder höher).
Im Code: Wenn Delphi 6 (oder höher) definiert ist, kompiliere diesen Code...

Frank

KlausV 30. Jan 2023 12:14

AW: DeveloperExpress Komponenten von D5 nach D7
 
Klasse, hat funktioniert. Danke für Die Hilfe.
Eins noch.
Die BPL wurde im Delphi Verzeichnis erstellt.
Wenn ich mir eine Komponenten nun in mein Projekt selektiere, dann versucht Delphi die PAS Datei in einem DeveloperExpress Verzeichnis zu suchen, was überhaupt nichts mit meiner Komponenten zu tun hat.
Die Sources habe ich in einem eigenen Verzeichnis unter C liegen und habe dieses Verzeichnis dem Suchpfad in der Umgebung hinzugefügt. Es wird aber immer noch in dem falschen Verzeichnis gesucht. Hängt das irgendwie mit der Kompilierung der BPL Datei zusammen oder wieso findet Delphi die PAS Files nicht?

Danke

dataspider 30. Jan 2023 12:58

AW: DeveloperExpress Komponenten von D5 nach D7
 
Du solltest den Bibliothekspfad und Suchpfad in der Delphi IDE überprüfen.
Wo das unter Delphi7 zu finden war, kann ich nicht mehr sagen. (unter Tools evtl.)

Das Verzeichnis mit den DevExpress PAS - Dateien sollte in diesen Suchpfad.
Bei DevExpress ist das heute eine ganze Liste, wie es bei dir ist, musst du schauen.

Frank

KlausV 30. Jan 2023 14:13

AW: DeveloperExpress Komponenten von D5 nach D7
 
Zitat:

Zitat von dataspider (Beitrag 1518052)
Du solltest den Bibliothekspfad und Suchpfad in der Delphi IDE überprüfen.
Wo das unter Delphi7 zu finden war, kann ich nicht mehr sagen. (unter Tools evtl.)

Das Verzeichnis mit den DevExpress PAS - Dateien sollte in diesen Suchpfad.
Bei DevExpress ist das heute eine ganze Liste, wie es bei dir ist, musst du schauen.

Frank

Das sollte meiner Meinung nach passen. So hatte ich es auch bei anderen Projekte gemacht und das hat so funktioniert. Ich denke eher, dass bei der Paketerstellung / Komponenten irgendetwas nicht passt. Aber da habe ich nichts gefunden.

Delphi.Narium 30. Jan 2023 14:43

AW: DeveloperExpress Komponenten von D5 nach D7
 
Unter D7 gibt es zwei Stellen, an denen die Suchpfade konfiguriert werden können.

Global gesehen:

Menü
Tools
Umgebungsoptionen...

Reiter Bibliothek

projektspezifisch:

Menü
Projekt
Optionen...

Reiter Verzeichnisse/Bindungen

Man muss aufpassen, dass es bei den Einträgen an den beiden Stellen nicht zu Konflikten kommt.

Im Zweifel einfach die nicht gefundenen Dateien ins Projekt aufnehmen.

Menü
Projekt
Dem Projekt hinzufügen...

Dort die nicht gefunden Datei auswählen. ggfls. wiederholen, bis der Compiler zufrieden ist und alles finden kann.

Gerade bei umfangreichen Suchpfaden kann diese Methode die Kompilierzeit deutlich reduzieren, da nicht jedesmal überall nach allem gesucht werden muss.

dataspider 30. Jan 2023 15:29

AW: DeveloperExpress Komponenten von D5 nach D7
 
Zitat:

Zitat von KlausV (Beitrag 1518056)
Zitat:

Zitat von dataspider (Beitrag 1518052)
Du solltest den Bibliothekspfad und Suchpfad in der Delphi IDE überprüfen.
Wo das unter Delphi7 zu finden war, kann ich nicht mehr sagen. (unter Tools evtl.)

Das Verzeichnis mit den DevExpress PAS - Dateien sollte in diesen Suchpfad.
Bei DevExpress ist das heute eine ganze Liste, wie es bei dir ist, musst du schauen.

Frank

Das sollte meiner Meinung nach passen. So hatte ich es auch bei anderen Projekte gemacht und das hat so funktioniert. Ich denke eher, dass bei der Paketerstellung / Komponenten irgendetwas nicht passt. Aber da habe ich nichts gefunden.

Üblicherweise kommen die Verzeichnisse mit Source - Dateien in den Suchpfad,
die Verzeichnisse mit *.dcu - Dateien in den Bibliothekspfad.

Frank

KlausV 30. Jan 2023 15:51

AW: DeveloperExpress Komponenten von D5 nach D7
 
Zitat:

Zitat von dataspider (Beitrag 1518066)
Zitat:

Zitat von KlausV (Beitrag 1518056)
Zitat:

Zitat von dataspider (Beitrag 1518052)
Du solltest den Bibliothekspfad und Suchpfad in der Delphi IDE überprüfen.
Wo das unter Delphi7 zu finden war, kann ich nicht mehr sagen. (unter Tools evtl.)

Das Verzeichnis mit den DevExpress PAS - Dateien sollte in diesen Suchpfad.
Bei DevExpress ist das heute eine ganze Liste, wie es bei dir ist, musst du schauen.

Frank

Das sollte meiner Meinung nach passen. So hatte ich es auch bei anderen Projekte gemacht und das hat so funktioniert. Ich denke eher, dass bei der Paketerstellung / Komponenten irgendetwas nicht passt. Aber da habe ich nichts gefunden.

Üblicherweise kommen die Verzeichnisse mit Source - Dateien in den Suchpfad,
die Verzeichnisse mit *.dcu - Dateien in den Bibliothekspfad.

Frank

Ja so sieht es aus. pas files im Source Pfad und DCU/BPL im LIB Pfad.
Komisch ist halt auch, dass Delphi die pas files in einem anderen Developer Package Pfad sucht. Gibt man beim Kompilieren/Installieren des Packages hier irgendetwas dabei an? Ich habe in den Optionen nichts gefunden.
Fehlermeldung: Datei nicht gefunden: C:\Program File ...\Developer Express\Express Editors Library\Delphi 7\Lib\dxfColorButton.
Wieso sucht Delphi in diesem Verzeichnis?
Wenn ich den Suchpfad im Projekt anpasse, dann passt es, aber da mache ich eigentlich nie etwas.

himitsu 30. Jan 2023 16:48

AW: DeveloperExpress Komponenten von D5 nach D7
 
Die originalen PAS sind auch nicht für den Compiler gedacht.
Egal wo er sucht, er hat sie eigentlich garnicht zu finden. Für ihn sind nur die DCU (und DFM/RES) im LibrarySearchPath.

Sie stehen für den Editor/Debugger in dessen SearchPath, damit der Quellcode zur vorkompilierten DCU angezeigt werden kann.

KlausV 30. Jan 2023 17:06

AW: DeveloperExpress Komponenten von D5 nach D7
 
Zitat:

Zitat von himitsu (Beitrag 1518072)
Die originalen PAS sind auch nicht für den Compiler gedacht.
Egal wo er sucht, er hat sie eigentlich garnicht zu finden. Für ihn sind nur die DCU (und DFM/RES) im LibrarySearchPath.

Sie stehen für den Editor/Debugger in dessen SearchPath, damit der Quellcode zur vorkompilierten DCU angezeigt werden kann.

Ja, das verstehe ich ja auch nicht.

KlausV 31. Jan 2023 06:55

AW: DeveloperExpress Komponenten von D5 nach D7
 
Guten Morgen,
nachdem die eine Komponenten nun funktioniert, gibt es zig weitere und die verzahnen dann wieder in andere. Was ein Mist. Ich müsste nun alle Komp, die benötigt nach D7 bringen.
Nun gibt es zwei Möglichkeiten:
1. das weiter so durchziehen und hoffen, dass es nicht irgendwann Probleme mit den heute schon installierten D7 Komponenten gibt
2. Delphi 5 und Delphi 10 auf einem System installieren, nur welche Probleme gibt es dann wieder? Borland selbst wird in zwei getrennten Ordnern installiert, aber was davon landet in der Registry und was in SYSTEM32 und überschreibt mir möglicherweise die D7 Installation. Was denkt Ihr? Am liebsten wäre es mir D5 und D7 zu installieren.

Danke.

Delphi.Narium 31. Jan 2023 09:53

AW: DeveloperExpress Komponenten von D5 nach D7
 
Pro Delphiversion eine VM?

Dann dürften die Versionen, Registryeinträge, ... vollständig voneinander getrennt sein.

KlausV 31. Jan 2023 11:03

AW: DeveloperExpress Komponenten von D5 nach D7
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1518084)
Pro Delphiversion eine VM?

Dann dürften die Versionen, Registryeinträge, ... vollständig voneinander getrennt sein.

ich befürchte, dass dies die einzige Variante ist. In der registry steht zuviel von Delphi 7, da wird es sicherlich Probleme geben und alle Komponenten auf D7 zu bringen, das beißt sich jetzt schon mit Klassen, die sowohl in D7 und D5 existieren.

Delphi.Narium 31. Jan 2023 12:10

AW: DeveloperExpress Komponenten von D5 nach D7
 
Dachte immer, das Borland (und Nachfolger) immer je Delphiversion einen eigenen Zweig in der Registry hatte bzw. haben, so dass da von Haus aus eigentlich kein Durcheinander entstehen sollte.

Worauf man aber dringend achten muss, ist die Quelltexte streng getrennt abzulegen und die Bibliotheks- bzw. Suchpfade klar und unmissverständlich zu trennen. Auch wenn man dann ggfls. diverse Fremdbibliotheken, Fremdkomponenten, ... mehrfach (also redundant) in den Verzeichnissen hat.

Ein Versionierungssystem könnte hier durchaus hilfreich sein.

haentschman 31. Jan 2023 12:21

AW: DeveloperExpress Komponenten von D5 nach D7
 
Zitat:

Ein Versionierungssystem könnte hier durchaus hilfreich sein.
...wer macht denn schon freiwillig Harakiri.:shock: (Japaner ausgenommen :zwinker:)

KlausV 31. Jan 2023 15:02

AW: DeveloperExpress Komponenten von D5 nach D7
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1518091)
Dachte immer, das Borland (und Nachfolger) immer je Delphiversion einen eigenen Zweig in der Registry hatte bzw. haben, so dass da von Haus aus eigentlich kein Durcheinander entstehen sollte.

Worauf man aber dringend achten muss, ist die Quelltexte streng getrennt abzulegen und die Bibliotheks- bzw. Suchpfade klar und unmissverständlich zu trennen. Auch wenn man dann ggfls. diverse Fremdbibliotheken, Fremdkomponenten, ... mehrfach (also redundant) in den Verzeichnissen hat.

Ein Versionierungssystem könnte hier durchaus hilfreich sein.

Ich habe mir gerade die Registry Einträge noch einmal angeschaut. Leider sind die Einträge nicht je Version getrennt. Daher würde ich mir bei einer D5 Installation die Einträge überschreiben und mit D5 im Pfad zuweisen.

KlausV 31. Jan 2023 16:09

AW: DeveloperExpress Komponenten von D5 nach D7
 
Oh mein Gott, ich werde jetzt langsam verrückt und es nimmt kein Ende.

Die Komponente dxDBGRID funktioniert unter D7 in meiner VM unter Windows XP. Die Sourcen habe ich verglichen zu der W10 D7 Installation. Aber ich bekomme die Komponente nicht geladen.
Es kommt immer die Meldung:
Package xxx kann nicht geladen werden. Das angegebene Modul kann nicht geladen werden.
Auch wenn ich die DPK File öffne und auf installieren klicke, kommt diese Meldung. Wie finde ich heraus, was hier fehlt?
Habe es mit dem process monitor versucht, aber irgendwie findet der überhaupt keine BPL Files. Es werden alle Verzeichnisse durchsucht und es wird immer "Name not found" angezeigt.

Danke.

Delphi.Narium 31. Jan 2023 16:52

AW: DeveloperExpress Komponenten von D5 nach D7
 
CMD aufrufen

PATH eingeben

Ist dort der Pfad zu den BPLs enhalten?

Suchmaschine sagt mir zu Windows 10 bezüglich Änderung der Umgebungsvariabeln:

Zitat:

Windows 10 und Windows 8

Suchen Sie in der Suche, und wählen Sie dann: System (Systemsteuerung)
Klicken Sie auf den Link Erweiterte Systemeinstellungen.
Klicken Sie auf Umgebungsvariablen. Suchen Sie im Abschnitt Systemvariablen die Umgebungsvariable PATH und wählen Sie sie. ...
Geben Sie im Fenster Systemvariable bearbeiten (bzw. ...
Ggfls. dort nachschauen, ob der Pfad zu den BPLs dort enthalten ist und den ergänzen.

Das bisherige Problem mit den Chaos zwischen D5 und D7 könnte eventuell auch darin begründet sein, dass von D7 im Suchpfad zuerst 'ne BPL von D5 gefunden wird und nicht die gleichnamige von D7, die in 'nem anderen oder später im PATH stehenden Verzeichnis gefunden werden kann oder andersherum oder garnicht gefunden wird oder irgendwie so, da kann schon der eine oder andere "Kürmel" entstehen :-(

MyRealName 1. Feb 2023 07:51

AW: DeveloperExpress Komponenten von D5 nach D7
 
Obwohl jede Delphi-Version seinen eigenen Registry Pfad hat gibt es trotzdem nur eine PATH-Variable. Und da stehen oft Pfad-Angaben der falschen (älteren) Delphi Version zuerst. Dadurch werden dann oft die dcp/bpl von der älteren Delphi Version zuerst gefunden und Delphi ignoriert meiner Erfahrung nach gerne angehängte Versionen wie vclXXX.bpl
Von daher würde ich schon dazu raten, jeweils 1 VM pro Delphi.
Inwieweit das jetzt bei DevExpress zutrifft, da die ja das RSXX dranhängen, weiss ich nicht.

himitsu 1. Feb 2023 09:22

AW: DeveloperExpress Komponenten von D5 nach D7
 
Es gibt auch gemeinsame globale Verzeichnisse und Registryzweige,
außerdem hatten die alten Delphiversionen noch massenhaft in C:\Windows\System32 reingemüllt.

Und ja, dann das PATH,
wobei man Packages ja normal besser mit Suffix compiliert und es somit keine Überschneidung geben kann (außer wenn auch auch die suffixlosen DCP und DCU in gemeinsamen Verzeichnissen/Suchpfaden hat)

Oder wie gestern bei einem Kollegen, wo gestern ständig die PAS gefunden wurde, obwohl die DCU eigentlich im Suchpfad vorher kommen "sollte" und aus unbekanntem Grund lässt sich die PAS auch grade nicht kompilieren lässt. (ins Package beim anderen Projekt ja, aber in neuem Projekt nicht)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz