![]() |
Delphi 2010 UND Delphi 7 verwenden?
Moin, Moin.
So langsam muss ich ja mal "warm werden" mit dem "teuren D2010" - fällt mir sehr schwer. So sollte zum Einstieg erst einmal ein altes Mini-Projekt nebenbei etwas modernisiert werden. Tja, und da haut's einem ja nur so die Fehlermeldungen um die Ohren: Chars und Strings sind so ganz anders geworden. OK, die Welt braucht das sicherlich ganz dringend! Ändern wir das eben ab! Aber halt, wie soll das denn funktionieren? Auch ein kleines, altes Programm nutzt natürlich Bibliotheks-Units - und auch dort passt natürlich vieles ebenso nicht mehr! Tja und das ist wohl nun das Problem: Ändere ich auch in den Bibliotheken, kann Delphi 7 (mit dem andere Projekte fertig gestellt werden sollen) da nix mit anfangen und meckert. Überall Compiler-Schalter einbauen und alle betroffenen Funktionalitäten doppelt vorhalten???? Hmm, also das kann es doch wohl nicht sein. Da geht meine Produktivität ja gegen NULL - und die soll doch enorm gesteigert werden, durch den neumodischen Kram, oder? Fragestellung: Gibt es da irgendeinen Schalter in der Delphi 2010 IDE, dass auch der neue Compiler für eine Übergangszeit mit dem alten Source (ohne diesen zu verändern) klar kommt? Gibt es da einen anderen Weg? Oder ist der schrittweise Umstieg in die Moderne nicht praktikabel/möglich? |
Re: Delphi 2010 UND Delphi 7 verwenden?
Abgesehn von Assemblerbefehlen würde sich theoretisch alles von D2007- nach D2009+ reibungslos portieren lassen, samt Umstellung auf Unicode.
Dafür hätte man aber früher eben alles "korrekt" geschrieben haben müssen. > Da wo bytegenaue Daten nötig sind > z.B. Datenübertragung und binäre Speicherung = packed Records = feste Typen (AnsiChar, AnsiString, WideString, LongInt und Co.) > beim Rest = die compiler-/systemabhängigen Typen (Char, String, Integer) Und vorallem keine willden Vermischungen dieser Typen also entweder deine Bibliotheks-Units nach obrigen Regeln umgestalten und dann auch die Anwendungen oder eben alles doppelt Bibliotheks-Units auf neusten Stand bringen und die alten Anwendungen mit 'ner alten Kopie dieser Units betreiben CodeGear hatte ja netter Weise die Standardunits nur typenmäßig umgestellt AnsiUpperCase ist in D2009/2010 Unicode, so daß man bei der Umstellung da nichts ändern muß. Will man beim Neuschreiben von Anwendungen aber wirklich mal Ansi, dann muß man sich eine Andere Unit einbinden ... ebenso für eine mehr nach Unicode klingenden Funktionsnamen :wall: |
Re: Delphi 2010 UND Delphi 7 verwenden?
Es sind keine komplizierte oder "wilden Sachen" enthalten. Aber eben 'ne ganze Menge dieser Char und String-Geschichten, wenn die Bibliotheken umgestaltet werden ohne zu Doppeln, sperre ich D7 aus.
Zitat:
:cry: Dann muss ich noch mal genau überlegen, wann ich den "Umstieg" machen... Auch wenn ich hoffte etwas anderes zu hören, vielen Dank für die Info! |
Re: Delphi 2010 UND Delphi 7 verwenden?
Kannst du da nichtmal ein kleines Beispiel liefern, vielleicht können wir gemeinsam eine brauchbare Lösung erarbeiten. Vielelicht ist diese Lösung dann auch so grundlegend, dass sich deine weiteren Probleme ebenfalls so lösen lassen. Also nur Mut...
|
Re: Delphi 2010 UND Delphi 7 verwenden?
Hallo omata!
Ja, gern... Die Schleife durchläuft einen (alten) String zeichenweise ...
Delphi-Quellcode:
Das führt zu einer Warnung und einem Vorgehenshinweis ".... Verwendung (von) .. 'CharInSet' in Betracht ziehen", also ändere ich nach...
while (p<=length(MsgStr)) and
(MsgStr[p] in ['0'..'9']) do begin ..
Delphi-Quellcode:
Leider folgen viele weitere Warnungen/Fehler, so konnte ich noch nicht einmal prüfen, ob meine Änderung nun korrekt ist. Aber, und das ist für mich im Augenblick das unangenehmste: Nach dieser Änderung kann Delphi 7 den Source natürlich nicht mehr "verdauen".
while (p<=length(MsgStr)) and
CharInSet(MsgStr[p],['0'..'9']) do begin .. Zweifelsohne kann der "alte" Source mit ein wenig Fleiß fit für Delphi 2010 gemacht werden. Aber, wie himitsu schon sagte: Source doppelt vorhalten?! Entweder innerhalb der Units oder gleich die kompletten Units doppelt. Tja, und das ist natürlich nicht so prickelnd. |
Re: Delphi 2010 UND Delphi 7 verwenden?
Hallo taaktaak,
das Problem kenne ich auch(allerdings mit Delphi 2009). Leider ist es nicht nur auf unseren Code begrenzt, sondern betrifft auch Fremd-Komponenten. Es gibt auch keinen Compiler-Schalter der einem helfen würde die Umstellung nach und nach zu vollziehen, sondern es geht nur ganz oder gar nicht. Bis bald Chemiker |
Re: Delphi 2010 UND Delphi 7 verwenden?
Kannst du das Problem nicht andersherum lösen?
Also in Delphi7 das nachbilden, was eben in Delphi2010 jetzt anders ist...
Delphi-Quellcode:
Die Routinen, die Delphi7 erweitern würde ich dann in eine eigene Unit auslagern, so dass du das dann nur noch einbinden mußt.
{$IfDef VER150}
function CharInSet(Text:Char; Menge:TMenge):boolean; begin Result:=(Text in Menge); end; {$EndIf} procedure TForm.ButtonClick(Sender: TObject); var p:integer; MsgStr:string; begin p:=0; while (p <= length(MsgStr)) and CharInSet(MsgStr[p],['0'..'9']) do begin inc(p); end; end; |
Re: Delphi 2010 UND Delphi 7 verwenden?
Da hier kein Unicode nötig ist, kannst du diese Warnung auch ignorieren und das alte IN auch erstmal belassen.
{$IfDef VER150} ist etwas blöde unglücklich entweder eine Versions-Lib nutzen, wo es z.B. {$If Delphi2007down} gibt oder {$If CompilerVersion <= 19.0} denn man nehme z.B. ein {$IfDef VER210} für D2010 und bei Umstellung auf Delphi 2011 gibt es wieder Probleme ... so wie jetzt auch :zwinker: |
Re: Delphi 2010 UND Delphi 7 verwenden?
Ich arbeite "gleichzeitig" mit Delphi 7, 2007 und 2010 mit den gleichen Bibliotheks-Sourcen. Der meiste Aufwand war sicherlich das Portieren der eigenen und der nicht mehr unterstützten Fremd-Bibliotheken, aber das war auch nach zwei Tagen geschafft.
Eigentlich hätte ich auch die D7 und D2007 Versionen einfach einfrieren können, da damit lediglich alte Programme gewartet werden. Die Versionsverwaltung sorgt eh schon dafür, daß jede Programmversion mit der dazu passenden Bibliotheksversion verheiratet wird. Wie sollte man sonst auch sinnvoll Fehler in älteren Versionen aufspüren können. Also, Koexistenz verschiedener Delphi-Versionen und Bibliotheken ist immer möglich, bedarf manchmal aber halt etwas Feintuning. |
Re: Delphi 2010 UND Delphi 7 verwenden?
Moin, Moin,l
nun sehe ich doch etwas klarer und fasse mal zusammen:
- allen Ratgebern vielen Dank :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 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