![]() |
Delphi 5 -> 7 - oh Schreck
Hi DPler,
ich habe die letzten zwei Tage damit verbracht, unsere Software an Delphi 7 anzupassen, aber voller Verzweiflung muss ich feststellen, dass das ein richtiger Horrortrip geworden ist. :twisted: :twisted: :twisted: Im folgenden beziehe ich mich vorwiegend auf COM und ActiveX Objekte, wen es interessiert, bitte weiterlesen, wer Ideen hat, bitte schreiben ; :roll: :arrow: Fast alle unserer Objekte unterstützen das VBScript for...each-Konstrukt, demenstsprechend haben wir eine Basisunit, welche die Aufgaben dafür kapselt. Bis Delphi 5 lief diese wunderbar. Seit D7 macht die Funktion
Code:
ein Problem. Der Index kann eine Zahl (Position in der Liste) oder ein String (Name des gesuchten Objektes) sein. VarType lieferte bis jetzt immer entweder vtSingle oder vtInteger für Zahlen zurück. Seit D7 kann es auch vtVariant sein - :!: vtVariant kann aber auch für Strings kommen. :?: Was mache ich jetzt, wenn als Parameter "123" übergeben wird, mein Objekt erhält vtVariant als Typ. Will ich jetzt das Objekt an der Position 123 oder das mit dem Namen "123" :?:
GetItems(Index: OleVariant): IDispatch
:arrow: Eines unserer Object stellt eine Pointerliste für ASP nach. Mit Hilfe der Funktion Add können neue Elemente jeder Art hinzugefügt werden. Nie ein Problem gewesen - seit D7 gibt hin und wieder Probleme, wenn diese Elemente COM-Objekte sind und vom Typ IDispatch abgeleitet sind. Aber nur hin und wieder. Manche gehen auch :?: Was ist der Grund :?: :arrow: Andere Probleme kommen so nach und nach zu Tage. Bei einigenen COM Objekten hat D7 mir freundlicher Weise meine Typenbibliothek auseinander genommen, bzw. die Delphi Implementation (Codierung) zerstört. :( :?: Wo kann die Ursache liegen :?: :arrow: Wer hat die Namen der Units, welche die Unit DsgnIntf ersetzen :?: Wenn ich jetzt weiter machen würde, dann käme noch viel :chat: :chat: :chat:, aber für den Anfang soll das erst einmal genügen. Für heute werde ich das :coder: wohl erst einmal einstellen und meinen Frust im Training an den anderen auslassen. :freak: Ich wünsch Euch viel Spass und mir viel Ruhe zum Erfolg mit dem neuesten Streichen in Delphi 7... Ciao, ...:cat:... |
Hi Sakura,
habe nicht alles gelesen, aber weiß jetzt, daß meine Entscheidung von vorletzer Woche richtig war, nämlich Delphi 7 wieder zu deinstallieren. Von der Basis Delphi 6 aus, wohlgemerkt. Das war aber bereits so früh, daß ich noch nicht mal den XP-Kinderspielplatz gesehen habe. 2 Tage Arbeit gespart. :dancer: :dancer2: Gruß Hansa P.S.: Kann irgendjemand vielleicht mal sagen, für wen ein Umstieg zwingend notwendig ist ? :mrgreen: |
Zitat:
( Freitag soll meine Kopie ausgeliefert werden :D ) |
Hi Sakura,
Zitat:
Zitat:
Gruß Hansa |
Zitat:
Zitat:
|
Hallo Sakura,
Die meisten fragen kann ich noch nicht beantworten aber die Frage =>Wer hat die Namen der Units, welche die Unit DsgnIntf ersetzen kann ich folgend beantworten {$IFDEF DELPHI5} DsgnIntf, {$ENDIF} {$IFDEF DELPHI6} DesignEditors, DesignIntf, {$ENDIF} ab delphi 6 wurde die Unit aufgeteilt Hatte das selbe Problem, als ich delphi 5 Komponenten auf delphi 6 umstellte Gruss Roger |
Danke, inzwischen ist mir aufgefallen, dass ich auf diesen Fakt bereits bei D3K hingewiesen habe, ohne jemals mit D6 gearbeitet zu haben. Musste aber auch erst einmal darauf kommen,
|
Hiho!
@Sakura: Modelmaker ist schon echt klasse, aber Bolt? Auf der Roadshow, auf der ich war, hat man verzweifelt versucht, uns Sinn und Zweck der Bolt-Komponenten näher zu bringen, leider vergebens; Das Einsatzgebiet ist nach wie vor fürchterlich diffus ("Trennung von Design & Businesslogic", ahso... :| ). Wieso bekommst du eigentlich "manchmal" vtvariant? Irgendwas muss doch den Unterschied machen, ob es vtvariant oder vtinteger etc. ist? Wie übergibst du denn den Wert an die Methode? Oder ist es nun die ganze Zeit vtVariant? Zur Not kannst du ja einen Default-Parameter in die Methode einbinden, mit dem du sagen kannst, von was für einem Typ der erste Parameter ist. Cu, Udontknow |
Hallo Sakura
Ich habe mir die Trial von D7 gezogen und mal eines unserer Projekte versucht zu generieren. Hatte leider die gleichen Probleme wie Du. Neben dem bekannten Problem mit den DsgnIntf ist mir noch folgendes aufgefallen: Konnte man unter D6 noch Komponenten mit unten stehendem Code registreiren geht bis auf das "RegisterComponents" nichts mehr.
Code:
Neben dem negativen, habe ich auch etwas erfreuliches beobachtet und hoffe dass mir einer dies bestätigen kann:
RegisterComponents('VZUG',[TJvProgressDlg, TDirMonitor, TAled, TDigit, TAPM, TProcList, TLCDScreen, TLCDAnimator, TLanguage]);
RegisterComponentEditor(TLCDAnimator,TLCDAnimatorEditor); RegisterPropertyEditor(TypeInfo(TStrings), TLCDAnimator, 'Code', TLCDAnimatorCodeEditorProperty); RegisterComponentEditor(TLCDScreen,TLCDScreenEditor); RegisterPropertyEditor(TypeInfo(TStringList), TLCDScreen, 'Lines', TLCDScreenLinesEditorProperty); Habe ein Projekt (ohne Zusatz Komponenten) unter D6 ohne Debugg-Infos generiert und unter D7 mit Debugg-Info generiert und siehe da, Das EXE aus D7 ist von 723Kb auf 651Kb geschrumpft. Ist dies nur ein Traum oder hast Du oder ev. andere dies auch beobachtet ? Gruss Roger |
Zitat:
...:cat:... P.S. Mein D7 Päckchen ist gestern endlich auf den Weg gegangen. :firejump: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz