Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Migrar Delphi 2007 a 10.1 Berlin (https://www.clubdelphi.com/foros/showthread.php?t=91079)

giko 07-11-2016 09:42:17

Migrar Delphi 2007 a 10.1 Berlin
 
Hola a todos

No tengo mucha experiencia en Delphi, pero me han encargado migrar una aplicación que está en Delphi 2007 a la última versión 10.1 Berlin. ¿Alguien podría decirme si existe alguna utilidad o herramienta que facilite dicha migración? Por el momento he intentado realizarla de manera artesanal, pero me encuentro con un montón de errores, algunos de ellos no sé muy bien por qué se producen.

Muchas gracias por adelantado por vuestra ayuda.

Un saludo

Casimiro Notevi 07-11-2016 09:46:26

No debería dar ningún error, si tienes instalado los componentes que se utilizan.

Neftali [Germán.Estévez] 07-11-2016 10:00:10

Cita:

Empezado por Casimiro Notevi (Mensaje 510490)
No debería dar ningún error, si tienes instalado los componentes que se utilizan.

Coincido con Casimiro.
Lo primero es que instales todos los componentes externos que tienes en la versión 2007 en la nueva.

A partir de ahí es posible que sí salga algún error, pero hay que tratarlos de forma específica.
Por ejemplo, es posible que algún componente haya cambiado en sus propiedades o métodos (me refiero a los externos).
Es posible que alguna función de Delphi haya quedado obsoleta, deberás cambiarlas por las nuevas.

Cita:

Empezado por giko (Mensaje 510489)
¿Alguien podría decirme si existe alguna utilidad o herramienta que facilite dicha migración?
Por el momento he intentado realizarla de manera artesanal, pero me encuentro con un montón de errores, algunos de ellos no sé muy bien por qué se producen.

El propio delphi hace el trabajo que necesitas (o todo el que se puede hacer). No necesitas ninguna utilidad externa.
Deberías ir colocando el texto de los errores y te podemos indicar a qué se refieren o cómo solucionarlos.

giko 07-11-2016 10:20:56

Cita:

Empezado por Neftali (Mensaje 510491)
Coincido con Casimiro.
Lo primero es que instales todos los componentes externos que tienes en la versión 2007 en la nueva.

A partir de ahí es posible que sí salga algún error, pero hay que tratarlos de forma específica.
Por ejemplo, es posible que algún componente haya cambiado en sus propiedades o métodos (me refiero a los externos).
Es posible que alguna función de Delphi haya quedado obsoleta, deberás cambiarlas por las nuevas.



El propio delphi hace el trabajo que necesitas (o todo el que se puede hacer). No necesitas ninguna utilidad externa.
Deberías ir colocando el texto de los errores y te podemos indicar a qué se refieren o cómo solucionarlos.


Muchas gracias por vuestras respuestas.
En principio tengo instalado lo mismo que tenía en la aplicación de 2007, Delphi y Report Builder. De hecho, el proyecto que estoy tratando de compilar contiene unos componentes desarrollados internamente, que los utiliza la aplicación que tendré que migrar.

Adjunto un detalle de los errores que tengo:

c:\program files (x86)\embarcadero\studio\18.0\bin\dcc32.exe -$J+ -$D1 --no-config -M -Q -Z -TX.bpl -AGenerics.Collections=System.Generics.Collections;Generics.Defaults=System.Generics.Defaults;WinType s=Winapi.Windows;WinProcs=Winapi.Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE -I"c:\program files (x86)\embarcadero\studio\18.0\lib\Win32\release";C:\Users\Cibernos\Documents\Embarcadero\Studio\18.0 \Imports;"c:\program files (x86)\embarcadero\studio\18.0\Imports";C:\Users\Public\Documents\Embarcadero\Studio\18.0\Dcp;"c:\pro gram files (x86)\embarcadero\studio\18.0\include";"c:\program files (x86)\embarcadero\studio\18.0\RBuilder\Lib\Win32" -LEC:\Users\Public\Documents\Embarcadero\Studio\18.0\Bpl -LNC:\Users\Public\Documents\Embarcadero\Studio\18.0\Dcp -NSData.Win;Web.Win;Soap.Win;Xml.Win;Bde;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;D ata;Datasnap;Web;Soap;Winapi;Datasnap.Win;System.Win; -O"c:\program files (x86)\embarcadero\studio\18.0\lib\Win32\release";C:\Users\Cibernos\Documents\Embarcadero\Studio\18.0 \Imports;"c:\program files (x86)\embarcadero\studio\18.0\Imports";C:\Users\Public\Documents\Embarcadero\Studio\18.0\Dcp;"c:\pro gram files (x86)\embarcadero\studio\18.0\include";"c:\program files (x86)\embarcadero\studio\18.0\RBuilder\Lib\Win32" -R"c:\program files (x86)\embarcadero\studio\18.0\lib\Win32\release";C:\Users\Cibernos\Documents\Embarcadero\Studio\18.0 \Imports;"c:\program files (x86)\embarcadero\studio\18.0\Imports";C:\Users\Public\Documents\Embarcadero\Studio\18.0\Dcp;"c:\pro gram files (x86)\embarcadero\studio\18.0\include";"c:\program files (x86)\embarcadero\studio\18.0\RBuilder\Lib\Win32" -U"c:\program files (x86)\embarcadero\studio\18.0\lib\Win32\release";C:\Users\Cibernos\Documents\Embarcadero\Studio\18.0 \Imports;"c:\program files (x86)\embarcadero\studio\18.0\Imports";C:\Users\Public\Documents\Embarcadero\Studio\18.0\Dcp;"c:\pro gram files (x86)\embarcadero\studio\18.0\include";"c:\program files (x86)\embarcadero\studio\18.0\RBuilder\Lib\Win32" -K00400000 --description:"Citi Editors" -NBC:\Users\Public\Documents\Embarcadero\Studio\18.0\Dcp -NHC:\Users\Public\Documents\Embarcadero\Studio\18.0\hpp\Win32 CitiEditors.dpk
...\CitiEditors\CitiPatterns.pas(8,29): warning W1050: W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
...\CitiEditors\CitiPatterns.pas(109,57): warning W1050: W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
...\CitiEditors\CitiPatterns.pas(193,26): error E2010: E2010 Incompatible types: 'AnsiChar' and 'Char'
...\CitiEditors\CitiPatterns.pas(218,19): error E2003: E2003 Undeclared identifier: 'DateSeparator'
...\CitiEditors\CitiPatterns.pas(218,64): error E2010: E2010 Incompatible types: 'string' and 'Integer'
...\CitiEditors\CitiPatterns.pas(232,23): error E2003: E2003 Undeclared identifier: 'TimeSeparator'
...\CitiEditors\CitiPatterns.pas(232,37): warning W1058: W1058 Implicit string cast with potential data loss from 'string' to 'ShortString'
...\CitiEditors\CitiPatterns.pas(235,30): warning W1058: W1058 Implicit string cast with potential data loss from 'string' to 'ShortString'
...\CitiEditors\CitiPatterns.pas(238,36): warning W1058: W1058 Implicit string cast with potential data loss from 'string' to 'ShortString'
...\CitiEditors\CitiPatterns.pas(261,11): error E2003: E2003 Undeclared identifier: 'DecimalSeparator'
...\CitiEditors\CitiPatterns.pas(319,42): warning W1050: W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
...\CitiEditors\CitiPatterns.pas(381,48): warning W1050: W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
...\CitiEditors\CitiPatterns.pas(401,30): error E2010: E2010 Incompatible types: 'AnsiChar' and 'Char'
...\CitiEditors\CitiPatterns.pas(403,29): error E2010: E2010 Incompatible types: 'AnsiChar' and 'Char'
...\CitiEditors\CitiEdit.pas(7,35): error F2063: F2063 Could not compile used unit 'CitiPatterns.pas'

Neftali [Germán.Estévez] 07-11-2016 10:31:53

Parece que la primera unit que te está dando problemas es esta: ...\CitiEditors\CitiPatterns.pas

¿A qué componente o paquete pertenece? No es estandard de Delphi.
¿Los has instalado correctamente?
¿Al instalarlos no te han dado problemas?

giko 07-11-2016 10:40:28

Hola

Efectivamente, no es un paquete standard. El módulo CitiPatterns.pas es el que estoy intentando compilar (el proyecto contiene otros módulos, pero parece que sólo éste genera errores y advertencias). Una vez compilado, debo proceder a instalarlo. Adjunto el código, por si aporta algo de información.

Muchas gracias.
Código Delphi [-]
unit CitiPatterns;

interface

uses Windows, SysUtils;

type
  TCitiCharSet = set of Char;
  TCitiValidateState = (vsOk, vsIncomplete, vsError);
  TCitiDateKind = (dkDate, dkDateTime, dkTime);

  EPatternException = class(Exception);

  TCitiPattern = class
  private
    FExpression: string;
    function GetCharSet: TCitiCharSet;
    procedure SetExpression(const Value: string);
  protected
    FPattern, FControl: string;
    FPatternPrefix, FControlPrefix: string;
    FCharSet, FCharSetPrefix: TCitiCharSet;
    procedure SetRegularExpr(RE: string);
  public
    // Construction
    constructor Create;
    // Pattern matching
    function Match(const Data: string; var Tail: string; var Jump: Boolean): TCitiValidateState;
    // Pattern configuration
    procedure SetDateTimePattern(AKind: TCitiDateKind; ATwoDigitYear, AReqSeconds: Boolean);
    procedure SetFloatPattern(ADigits, ADecimals: Integer; Neg, Dot: Boolean);
    procedure SetIntegerPattern(AMin, AMax: Integer);
    procedure SetPrefix(const PatPref, CtlPref: string; const CSet: TCitiCharSet);
  public
    property CharSet: TCitiCharSet read GetCharSet;
    property Expression: string read FExpression write SetExpression;
  end;

procedure PatternException(const Msg: string);

resourcestring
  SInvalidPattern = 'Invalid pattern';

implementation

var
  AlphaChars: TCitiCharSet = [];
  AlphaNums: TCitiCharSet = [];

// Exceptions

procedure PatternException(const Msg: string);
begin
  raise EPatternException.Create(Msg);
end;

// TCitiPattern: construction

constructor TCitiPattern.Create;
begin
  inherited Create;
  FCharSet := [#0..#255];
end;

// TCitiPattern: access methods for properties

function TCitiPattern.GetCharSet: TCitiCharSet;
begin
  Result := FCharSet + FCharSetPrefix;
end;

procedure TCitiPattern.SetExpression(const Value: string);
begin
  if Value <> FExpression then
  begin
    SetRegularExpr(Value);
    FExpression := Value;
  end;
end;

// TCitiPattern: parsing expressions into pattern programs

function ProcessGroups(const S: string): string;
var
  Stack: array [1..100] of string;
  Temp: string;
  Top: Integer;
  I, J, Times: Integer;
begin
  Top := 1;
  Stack[1] := '';
  I := 1;
  while I <= Length(S) do
    case S[i] of
      '[':
        begin
          Inc(Top);
          Stack[Top] := '[';
          Inc(I);
        end;
      ']':
        begin
          if Top = 1 then
            PatternException(SInvalidPattern);
          Temp := Stack[Top] + ']';
          Dec(Top);
          Inc(I);
          Times := 0;
          while (I <= Length(S)) and (S[i] in ['0'..'9']) do
          begin
            Times := Times * 10 + Ord(S[i]) - Ord('0');
            Inc(I);
          end;
          if Times = 0 then Times := 1;
          for J := 1 to Times do
            //AppendStr(Stack[Top], Temp);
            Stack[Top] := Stack[Top] + Temp
        end;
    else
      //AppendStr(Stack[Top], S[i]);
      Stack[Top] := Stack[Top] + S[i];
      Inc(I);
    end;
  if Top <> 1 then
    PatternException(SInvalidPattern);
  Result := Stack[1];
end;

procedure TCitiPattern.SetRegularExpr(RE: string);
var
  I, Top, J: Integer;
  P, C: string;
  Ch: Char;
  Stack, Patch: array [1..100] of Integer;
  CS: TCitiCharSet;
begin
  P := '';
  C := '';
  CS := [];
  if RE <> '' then
  begin
    if Pos('[', RE) <> 0 then
      RE := ProcessGroups(RE);
    Top := 0;
    I := 1;
    while I <= Length(RE) do
    begin
      Ch := RE[i];
      case Ch of
        '[':
          begin
            Inc(Top);
            Stack[Top] := Length(P) + 1;
            Patch[Top] := 0;
          end;
        '|':
          begin
            if Top = 0 then
              PatternException(SInvalidPattern);
            //AppendStr(P, #1);
            P := P + #1;
            //AppendStr(C, #0);
            C := C + #0;
            C[Stack[Top]] := Char(Length(P) + 1 - Stack[Top]);
            Stack[Top] := Length(P) + 1;
            C[Length(C)] := Chr(Patch[Top]);
            Patch[Top] := Length(C);
          end;
        ']':
          begin
            if Top = 0 then
              PatternException(SInvalidPattern);
            C[Stack[Top]] := Chr(Length(P) + 1 - Stack[Top]);
            while Patch[Top] <> 0 do
            begin
              J := Patch[Top];
              Patch[Top] := Ord(C[J]);
              C[J] := Chr(Length(C) + 1 - J);
            end;
            Dec(Top);
          end;
      else
        //AppendStr(P, Ch);
        P := P + Ch;
        //AppendStr(C, #0);
        C := C + #0;
        case Ch of
          '_': CS := [#0..#255];
          '#': CS := CS + ['0'..'9'];
          '@': CS := CS + AlphaChars;
          '%': CS := CS + AlphaNums;
        else
          Include(CS, Ch);
        end;
      end;
      Inc(I);
    end;
    //AppendStr(P, #0);
    P := P + #0;
    //AppendStr(C, #0);
    C := C + #0;
  end;
  FPattern := P;
  FControl := C;
  FCharSet := CS;
end;

// TCitiPattern: special patterns

procedure TCitiPattern.SetDateTimePattern(AKind: TCitiDateKind; ATwoDigitYear,
  AReqSeconds: Boolean);
var
  S: string;
begin
  S := '';
  if AKind <= dkDateTime then // AKind is dkDate, dkDateTime, dkTime
  begin
    S := '#[#]' + DateSeparator + '#[#]' + DateSeparator + '##';
    if ATwoDigitYear then
      //AppendStr(S, '[##]')
      S := S + '[##]'
    else
      //AppendStr(S, '##');
      S := S + '##';
  end;
  if AKind = dkDateTime then
    //AppendStr(S, ' [ ]');
    S := S + ' [ ]';
  if AKind >= dkDateTime then
  begin
    //AppendStr(S, '#[#]' + TimeSeparator + '#[#]');
    S := S + '#[#]' + TimeSeparator + '#[#]';
    if AReqSeconds then
      //AppendStr(S, TimeSeparator + '#[#]')
      S := S + TimeSeparator + '#[#]'
    else
      //AppendStr(S, '[' + TimeSeparator + '#[#]]');
      S := S + '[' + TimeSeparator + '#[#]]';
  end;
  SetRegularExpr(S);
end;

procedure TCitiPattern.SetFloatPattern(ADigits, ADecimals: Integer; Neg,
  Dot: Boolean);
var
  S, S1: string;
begin
  if Neg then
    S := '[-]#'
  else
    S := '#';
  if ADigits > 1 then
  begin
    //AppendStr(S, '[#]');
    S := S + '[#]';
    //AppendStr(S, IntToStr(ADigits - 1));
    S := S + IntToStr(ADigits - 1);
  end;
  if ADecimals > 0 then
  begin
    S1 := DecimalSeparator;
    repeat
      if Dot then
        //AppendStr(S1, '#')
        S1 := S1 + '#'
      else
        //AppendStr(S1, '[#]');
        S1 := S1 + '[#]';
      Dot := False;
      Dec(ADecimals);
    until ADecimals = 0;
    if Dot then
      //AppendStr(S, S1)
      S := S + S1
    else
      //AppendStr(S, '[' + S1 + ']');
      S := S + '[' + S1 + ']';
  end;
  SetRegularExpr(S);
end;

procedure TCitiPattern.SetIntegerPattern(AMin, AMax: Integer);
var
  S: string;
begin
  if AMin >= AMax then
    AMin := -MaxLongInt;
  if AMin < 0 then
    S := '[-]#'
  else
    S := '#';
  AMin := Abs(AMin);
  AMax := Abs(AMax);
  if AMin > AMax then AMax := AMin;
  while AMax >= 10 do
  begin
    AMax := AMax div 10;
    //AppendStr(S, '[#]');
    S := S + '[#]';
  end;
  SetRegularExpr(S);
end;

// TCitiPattern: prefixed expression for filter patterns

procedure TCitiPattern.SetPrefix(const PatPref, CtlPref: string;
  const CSet: TCitiCharSet);
begin
  FPatternPrefix := PatPref;
  FControlPrefix := CtlPref;
  FCharSetPrefix := CSet;
end;

// TCitiPattern: the match engine

function MatchChar(PatChar, DataChar: Char): Boolean;
begin
  case PatChar of
    '#': Result := DataChar in ['0'..'9'];
    '_': Result := True;
    '@': Result := IsCharAlpha(DataChar);
    '%': Result := IsCharAlphaNumeric(DataChar);
  else
    Result := (PatChar = DataChar);
  end;
end;

function TCitiPattern.Match(const Data: string; var Tail: string;
  var Jump: Boolean): TCitiValidateState;
var
  I, J: Integer;
  Pat, Con: string;
begin
  Jump := False;
  if FPattern = '' then
  begin
    Result := vsOk;
    Exit;
  end;
  Pat := FPatternPrefix + FPattern;
  Con := FControlPrefix + FControl;
  ASSERT(Length(Pat) = Length(Con));
  Tail := '';
  I := 1;
  J := 1;
  while J <= Length(Data) do  // For each character in Data
    if Pat[i] = #0 then       // Halt pattern matching
    begin
      Result := vsError;      // Data string is longer than pattern
      Exit;
    end
    else if MatchChar(Pat[i], Data[J]) then
    begin
      Inc(I);
      Inc(J);
    end
    else if Con[i] = #0 then
    begin                     // Data mismatch; no jump available
      Result := vsError;
      Exit;
    end
    else                      // Jump to alternative
      Inc(I, ShortInt(Con[i]));
  if Pat[i] = #1 then         // Skip vertical bar (|)
    Inc(I, ShortInt(Con[i]));
  J := I;
  while Con[i] <> #0 do       // Skip optional strings
    Inc(I, ShortInt(Con[i]));
  if Pat[i] = #0 then
  begin
    Result := vsOk;
    Jump := I = J;            // No optional strings at pattern's end
  end
  else
  begin
    Result := vsIncomplete;   // Data string is shorter than pattern
    repeat
      if Pat[J] = #1 then
        Inc(J, ShortInt(Con[J]))
      else if (Con[J] = #0) and
        not (Pat[J] in [#0, '#', '@', '%', '_']) then
      begin
        //AppendStr(Tail, Pat[J]);
        Tail := Tail + Pat[J];
        Inc(J);
      end
      else
        Break;
    until False;
  end;
end;

// Initialization & finalization

var
  Ch: Char;
initialization
  for Ch := #32 to #255 do
  begin
    if IsCharAlpha(Ch) then
      Include(AlphaChars, Ch);
    if IsCharAlphaNumeric(Ch) then
      Include(AlphaNums, Ch);
  end;
end.

Casimiro Notevi 07-11-2016 10:52:39

Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración :)

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

Neftali [Germán.Estévez] 07-11-2016 11:31:16

¿Esos componentes no tienen versión actualizada?

giko 07-11-2016 12:05:01

No, es un componente desarrollado por el equipo que diseñó la aplicación, y es el componente lo que estoy intentando compilar en la versión 10.1 y que me está generando estos errores.

Muchas gracias.

Neftali [Germán.Estévez] 07-11-2016 12:30:18

Entonces en este caso, tendrás que hacer la traducción.
Deja a un lado el EXE e intenta eliminar los Hints y Warnings de este fichero cuando lo compilas/Instalas.


Código:

...\CitiEditors\CitiPatterns.pas(8,29): warning W1050: W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
En esa línea utiliza la función à la que hare referencia el warning.

Código:

...\CitiEditors\CitiPatterns.pas(193,26): error E2010: E2010 Incompatible types: 'AnsiChar' and 'Char'
Cambia las varuiables y constantes por AnsiChar. En consecuencia deberás cambiar parámetros de las funciones que los utilicen.

Código:

...\CitiEditors\CitiPatterns.pas(218,19): error E2003: E2003 Undeclared identifier: 'DateSeparator'
Para esto, busca en la ayuda sobre TFormatSettings en System.SysUtils

Código Delphi [-]
  ... TFormatSettings.DateSeparator

Código:

...\CitiEditors\CitiPatterns.pas(232,23): error E2003: E2003 Undeclared identifier: 'TimeSeparator'
(Igual que el anterior)

giko 07-11-2016 12:42:21

Muchas gracias. Intentaré hacerlo así, a ver qué consigo.

Un saludo

Neftali [Germán.Estévez] 07-11-2016 12:52:39

A medida que vayas resolviendo, ves colocando los que te van quedando...

tmsanchez 07-11-2016 14:26:59

Hola, me parece que Embarcadero renovó la página para apoyar en la migración de aplicaciones desde versiones anteriores, probablemente te ayude la información que publicaron:

https://www.embarcadero.com/es/rad-i...upgrade-center

Saludos.

Neftali [Germán.Estévez] 07-11-2016 15:09:05

^\||/^\||/^\||/

No conocía ese link.

giko 08-11-2016 19:06:12

Muchas gracias por el enlace. Creo que me será útil, porque ya he solucionado algunos errores y ahora se me presenta uno relacionado con el BDE (DBTables). Por lo que he visto en este enlace y buscando por Internet, el BDE está ya obsoleto y creo que en el enlace de Embarcadero da algunas nociones sobre cómo migrar a FireDAC.

Muchas gracias a todos de nuevo.

giko 14-11-2016 11:57:56

Buenas de nuevo

Sigo trabajando en la migración de mi aplicación, y tengo un problema que llevo unos días intentando resolver y no consigo hacerlo: "[dcc32 Fatal Error] Functions_Ado.pas(7): F2613 Unit 'DBTables' not found." Como comenté en la respuesta anterior, he visto que el BDE de Delphi ha quedado obsoleto, pero no sé cómo sustituirlo por algún componente nuevo. He leído por ahí que aun es posible descargar el BDE para Delphi 10.1, pero hace falta ser un usuario registrado para poder descargarlo. La licencia que voy a usar está en proceso de gestión, por lo que no puedo descargarlo hasta que la tenga, y además, me gustaría migrar la aplicación sustituyendo los componentes obsoletos por los más actualizados. ¿Podéis orientarme sobre cómo hacerlo?

Muchas gracias por adelantado.

Un saludo

Neftali [Germán.Estévez] 14-11-2016 12:13:53

Si buscas sobre "Migrate BDE FireDAC" encontrarás bastantes links al respecto. Hay alguna utilidad de Embarcadero que te ayuda a hacerlo y alguna comercial que promete hacerlo de forma automática (aunque no las he probado).

Revisa los links.
Todo dependerá del tamaño de tu aplicación y del uso que hagas de los componentes.
Lo que sí parece recomendable es que sustituyas el BDE .

http://docwiki.embarcadero.com/RADSt...ons_to_FireDAC
https://community.embarcadero.com/bl...th-delphi-10-1
https://www.youtube.com/watch?v=_ttdy9_2rWo
...

giko 14-11-2016 13:19:14

Buenas

Efectivamente, viendo por ahí había encontrado una equivalencia entre los nombres (variables, módulos, etc.) entre BDE y FireDAC. Sigo avanzando.

Muchas gracias de nuevo.

giko 29-11-2016 12:48:39

Buenos días

Después de intentar seguir con la migración, al abrir una de las aplicaciones que pretendo migrar, el IDE se queda colgado ("not responding") y no consigue terminar de abrirla. He dejado el equipo incluso 24 horas intentando abrirla sin ningún resultado. ¿A alguien le ha sucedido alguna vez? ¿Sabéis por qué puede estar pasando esto?

Muchas gracias por adelantado.

Neftali [Germán.Estévez] 29-11-2016 15:20:10

Crea un proyecto nuevo y ves añadiendo los formularios uno a uno del proyecto original.
A ver si detectas si el problema es de alguno concreto o del proyecto en sí.


La franja horaria es GMT +2. Ahora son las 12:43:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi