Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Delphi 2010 UND Delphi 7 verwenden? (https://www.delphipraxis.net/143799-delphi-2010-und-delphi-7-verwenden.html)

taaktaak 23. Nov 2009 21:53


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?

himitsu 23. Nov 2009 22:18

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:

taaktaak 23. Nov 2009 22:30

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:

oder eben alles doppelt
Bibliotheks-Units auf neusten Stand bringen
und die alten Anwendungen mit 'ner alten Kopie dieser Units betreiben
Tja, das ist so ziemlich das, was ich befürchtet habe..
: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!

omata 23. Nov 2009 22:41

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

taaktaak 23. Nov 2009 23:47

Re: Delphi 2010 UND Delphi 7 verwenden?
 
Hallo omata!

Ja, gern...

Die Schleife durchläuft einen (alten) String zeichenweise ...

Delphi-Quellcode:
while (p<=length(MsgStr)) and
      (MsgStr[p] in ['0'..'9']) do begin
  ..
Das führt zu einer Warnung und einem Vorgehenshinweis ".... Verwendung (von) .. 'CharInSet' in Betracht ziehen", also ändere ich nach...

Delphi-Quellcode:
while (p<=length(MsgStr)) and
      CharInSet(MsgStr[p],['0'..'9']) do begin
  ..
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".

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.

Chemiker 24. Nov 2009 00:05

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

omata 24. Nov 2009 00:07

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:
{$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;
Die Routinen, die Delphi7 erweitern würde ich dann in eine eigene Unit auslagern, so dass du das dann nur noch einbinden mußt.

himitsu 24. Nov 2009 07:39

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:

Uwe Raabe 24. Nov 2009 09:11

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.

taaktaak 24. Nov 2009 11:43

Re: Delphi 2010 UND Delphi 7 verwenden?
 
Moin, Moin,l
nun sehe ich doch etwas klarer und fasse mal zusammen:
  • Einen Schalter "arbeite so wie früher" gibt es in Delphi2010 nicht - da habe ich also nix übersehen.
  • Die Bibliotheken müssen an die neue Welt angepassst werden - diese Arbeit muss nun einmal sein.
  • Damit das alte Delphi mit den angepassten Bibliotheken etwas anfangen kann, wird in einer speziellen Unit das nachgebildet, was D7 nicht kennt. Diese Unit wird nur eingebunden, wenn mit D7 gearbeitet/compiliert wird.
Ja, damit ist das Vorgehen klar
- allen Ratgebern vielen Dank
:hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 Uhr.
Seite 1 von 2  1 2      

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