Ver Mensaje Individual
  #1  
Antiguo 05-03-2010
elarys elarys is offline
Miembro
 
Registrado: abr 2007
Posts: 94
Reputación: 18
elarys Va por buen camino
Error: Incompatible types: got "Pointer" expected

Hola, estoy tratando de pasar mi clasesita de Delphi a Lazarus para programar sobre linux ubuntu y probar que tal me va... resulta que me esta dando error y ya se me quemo el libro

Error: Incompatible types: got "Pointer" expected "TSocio"
Este seria el error en esta parte
Exactamente en la linea
Result := FSocios[index];

function TSocioList.GetItems(index:integer):TSocio;
begin
Result := FSocios[index];
end;

Aqui una parte de mi clasesita

Código Delphi [-]
type 
  TSocio = class (TPersistent) 
  protected 
    FNumero:integer; 
    FApellido:string; 
    FNombre:string;
etc... etc...
Hasta ahi todo bien

Y despues quiero una lista de 1 a n datos

Código Delphi [-]
  TSocioList = class (TPersistent) 
  private 
    FSocios:TList; 
  protected 
    function GetItems(index:integer): TSocio; 
  public 
    constructor Create; 
    procedure Add(item:TSocio); 
    procedure Delete(index:integer); 
    function GetCount:integer; 
    property Count:integer read GetCount; 
    property Items[index:integer]: TSocio read GetItems; 
  end; 
 
implementation 
 
constructor TSocioList.Create; 
begin 
  FSocios := TList.Create; 
end; 

procedure TSocioList.Add(item:TSocio); 
begin 
  FSocios.Add(item); 
end;
 
procedure TSocioList.Delete(index:integer); 
begin 
  FSocios.Delete(index); 
end; 
 
function TSocioList.GetCount:integer; 
begin 
  Result := FSocios.Count; 
end; 
 
function TSocioList.GetItems(index:integer):TSocio; 
begin 
  Result := FSocios[index]; 
end;

Levanto datos de mi base de datos con query y asigno a la lista
la clase me devuelve una lista con 1 o n datos de mi tabla
que despues por cada formulario o donde sea los puedo usar

Código Delphi [-]

type 
  TfrmMain = class(TForm)
  //etc... etc...
 
  private 
    FSocio:TSocio;

    function GetSocio: TSocio; 
    procedure SetSocio(const value: TSocio); 
 
  public 
    property Socio:TSocio read GetSocio write SetSocio; 
  end;

var 
  frmMain: TfrmMain; 
 
implementation 
 
function TfrmMain.GetSocio: TSocio; 
begin 
  if not Assigned (FSocio) then 
    FSocio := TSocio.Create; 
  Result := FSocio; 
end; 
 
procedure TfrmMain.SetSocio(const value: TSocio); 
begin 
  FSocio := Value; 
end;

procedure TfrmMain.PrepareEdit; 
begin 
  edtNumero.Text := IntToStr(Socio.Numero); 
  edtApellido.Text := Socio.Apellido; 
  edtNombre.Text := Socio.Nombre; 
end;

etc... etc...

Si tengo que agregar otra parte de codigo para que se entienda solo pidan me
El error no debe ser tan grave ya que en delphi esto funciona
El problema esta en free pascal del lazarus

Última edición por elarys fecha: 05-03-2010 a las 04:54:00.
Responder Con Cita