Einzelnen Beitrag anzeigen

Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Delphi 4 -> Delphi 2006 Enterprise

  Alt 12. Dez 2006, 10:44
Zitat von HolgerCW:
weiss hier jemand, ob man Projekte aus Delphi 4 in Delphi 2006 ohne Einschränkungen weiterentwickeln kann?
Wir haben mit der Umstellung von Delphi 5 nach Delphi 7 deutlich mehr Probleme gehabt als bei Delphi 7 nach Delphi 2006.
Diese Probleme wirst Du dann warscheinlich auch haben.
Ichhabe mal eine Lister der häufigsten Probleme bei unserer Umstellung zusammengestellt:
Ich hoffe das hilft Dir weiter
mfg
MabuSE
  • Bedingte Kompilierung
    Du solltest Dir alle "bedingte Kompilierung"-Stellen anschauen.
    Oft wird z.B. {$IFDEF VERXXX} verwendet um Quellcode führ mehrere Kompiler anzupassen.
    Wenn nun ein "neuer" Kompiler dazukommt sollten diese Stellen angepasst werden.
    Oft sind diese VERXXX auch in *.inc Dateien ausgelagert. Es werden dann eigene Symbole z.B. Delphi5Up definiert.
    Also nach $IFDEF bzw. $IFNDEF suchen.
    • (unvollständige) Liste der Pascal (Delphi) Versionen:
      VER60 = Turbo Pascal 6.0
      VER70 = Borland Pascal 7.0
      VER80 = Delphi 1.0
      VER90 = Delphi 2.0
      VER93 = C++ Builder 1.0
      VER100 = Delphi 3.0
      VER110 = C++ Builder 3.0
      VER120 = Delphi 4.0
      VER125 = C++ Builder 4.0
      VER130 = Delphi 5.0 / C++ Builder 5.0
      VER140 = Delphi 6.0 / C++ Builder 6.0
      VER150 = Delphi 7.0 / C++ Builder 7.0
      VER160 = Delphi 8.0
      VER170 = Delphi 9.0 -> D2005
      VER180 = Delphi 10.0 -> D2006
  • zw. D5 und D6 haben sich einige Dinge bei der "Komponentenentwicklung" getan.
    -> Lösung: Das leidige Problem mit der DsgnIntf bzw. Proxy.dcu
  • RtlConsts
    Einige Konstanten sind in die Unit RtlConst verschoben worden.
    Delphi-Quellcode:
    uses
      RtlConsts;

    // constants that are now in RtlConsts:
    // raise Exception.Create(ResStr(SLineTooLong));
    // raise Exception.Create(ResStr(SFOpenError));
  • Variants
    Einige Funktionen sind in die Unit Variants verschoben worden.
    Delphi-Quellcode:
    uses
      Variants;

    // functions now in Variants;
    // Result := not VarIsEmpty(FValue);
  • StrUtils
    Einige Funktionen sind in die Unit StrUtils verschoben worden.
  • DateTimeUtils
    Einige Funktionen sind in die Unit DateTimeUtils verschoben worden.
  • PSock
    Die Unit PSock enthält TPowersock, die Basisklasse der FastNet-Tools der Firma NetMasters. Die FastNet Tools werden bei Delphi 7 nicht mehr mitgeliefert und wurden schon in Delphi 6 durch die Indy Komponenten ersetzt.

    Alle Komponenten die mit TNM... Anfangen und in Units NM* definiert sind sollten zu den FastNet Komponenten gehören.

    In der Unit PSock sind neben dem Wrapper für den Winsock auch noch 3 String Funktionen definiert:
    • NthPos
    • NthWord
    • StreamLn
    Die Funktion NthPos wurde von mir nach Delphi 7 portiert, da sie in unseren Projekten verwendet wird.

    Auszug aus der Delphi 5 Onlinehilfe
    Funktion NthPos
    function NthPos(InputString: String; Delimiter: Char; Number: integer): integer; Beschreibung
    Die Funktion NthPos gibt die Position des angegebenen Auftretens des festgelegten Begrenzungszeichens zurück.

    Parameter:
    InputString = Der Parameter InputString enthält den zu untersuchenden String
    Delimiter = Der Parameter Delimiter gibt das Zeichen an, das als ein Trennzeichen zu verwenden ist
    Number = Der Parameter Number gibt das Vorkommen des Begrenzungszeichens an, von dem die Position zurückzugeben werden soll.

    Hinweis:
    Die Verwendung dieser Funktion erfordert nicht, daß beliebige der FastNet-Komponenten in einer Anwendung verwendet werden. Die Unit Psock muß jedoch in der Uses-Anweisung der Unit stehen, in der die Funktion verwendet wird.


    Portierung von NthPos auf Delphi 7:

    Delphi-Quellcode:
    unit PSock_D7;

    // Diese Unit ersetzt die PSock.dcu aus Delphi 5,
    // da diese in Delphi 7 nicht mehr mitgeliefert wird.
    // 01.02.2005 jma, mbd: Erste Version in "\merian\Devisenhandel\Komponenten\Source\Sonstige\PSock_D7.pas"

    interface
    {
      Deklaration
      function NthPos(InputString: String; Delimiter: Char; Number: integer): integer;

    Beschreibung
      Die Funktion NthPos gibt die Position des angegebenen Auftretens des
      festgelegten Begrenzungszeichens zurück.

    Parameter:
      InputString  = Der Parameter InputString enthält den zu untersuchenden String
      Delimiter    = Der Parameter Delimiter gibt das Zeichen an, das als ein
                    Trennzeichen zu verwenden ist
      Number      = Der Parameter Number gibt das Vorkommen des Begrenzungszeichens
                    an, von dem die Position zurückzugeben werden soll.

    Hinweis:
      Test mit D5 ergab:
        Number = 0 -> Result := 1
        number > Anz. Delimiter in String -> Result := length(InputStr)+1
    }

    function NthPos(InputString: AnsiString; Delimiter: Char; Number: Integer): Integer;

    implementation

    uses StrUtils;

    function NthPos(InputString: AnsiString; Delimiter: Char; Number: Integer): Integer;
    var
      i, j, k: Integer;
    begin
      i := 1;
      j := 0;
      k := 1;
      while (j < Number) and (i > 0) do
      begin
        i := PosEx(Delimiter, InputString, k);
        k := i + 1;
        Inc(j);
      end;
      if i = 0 then
      begin
        if Number = 0 then
        begin
          Result := 1
        end
        else
        begin
          Result := Length(InputString)+1;
        end;
      end
      else
      begin
        Result := i;
      end;
    end;

    end.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat