Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Incompatibilidad de un proyecto en una función del delphi 7 al 10.3 (https://www.clubdelphi.com/foros/showthread.php?t=94480)

Edwardfeliz 29-02-2020 01:07:15

Incompatibilidad de un proyecto en una función del delphi 7 al 10.3
 
Hola, Migre de delphi 7 al 10.3, pero al ejecutar el proyecto me sale este error en dos lineas de una función que hago para sumar los totales de un dbgrid.

Código Delphi [-]
function SumarTotal(Grid: TDBGrid; const AFieldName: string): Currency;
var
  BM: TBookMarkStr;
begin
  Result:= 0;
  with Grid.DataSource.DataSet do
  begin
    BM:=  Bookmark;              //---------------En esta linea---------------------
    DisableControls;
    while not Eof do
    begin
      Result:= Result + FieldByName(AFieldName).AsCurrency;
      Next;
    end;
    BookMark:= BM;   //---------------En esta linea---------------------
    EnableControls;
  end;
end;

Este es el error.

Código Delphi [-]
[dcc32 Error] Facturar.pas(125): E2010 Incompatible types: 'AnsiString' and 'System.TArray'
[dcc32 Error] Facturar.pas(132): E2010 Incompatible types: 'System.TArray' and 'AnsiString'

Como puedo solucionarlo? ^\||/

manelb 29-02-2020 08:13:48

Hola a todos....

Cambia

Código Delphi [-]
var
  BM: TBookMarkStr;

por

Código Delphi [-]
var
  BM: TBookMark;


En la unidad Data.DB donde esta declarado TBookmark pone:

Código Delphi [-]
  TBookmark = TArray;
{$IFNDEF NEXTGEN}
  TBookmarkStr = AnsiString; // deprecated use TBookmark instead.
{$ENDIF !NEXTGEN}

En tu código tienes declarado BM: TBookMarkStr; cuando DataSet.Bookmark es de tipo TBookmark

Saludos a todos.

Edwardfeliz 29-02-2020 18:39:31

Perfecto, Gracias! ^\||/


La franja horaria es GMT +2. Ahora son las 09:21:12.

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