[Lazarus-es] Error en paso de parametros

Antonio Évora aevorar en gmail.com
Dom Oct 21 01:00:55 CEST 2012


Estimados listeros,
Trabajo con la revisión de SVN 35723 de Lazarus y fpc 2.4.4. y estoy 
teniendo un problema con el paso de parámetros a una función. Llamo dos 
veces a la función (exactamente la misma llamada) y la primera se pasa 
todo correctamente pero la segunda vez el primer parámetro no es pasado 
(pasa como cadena vacía). Añado el código por si le queréis dar un 
vistazo, en un proyecto nuevo ponéis un botón y listo..

Un saludo y gracias de antemano.
Antonio Évora

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, 
StdCtrls;

type
   TForm1 = class(TForm)
     Button1: TButton;
     procedure Button1Click(Sender: TObject);
   private
     { private declarations }
   public
     function StringToWhere(aString: string): boolean;
     { public declarations }
   end

var
   Form1: TForm1;

implementation

uses LazUTF8;

{$R *.lfm}

function GetSubString(aStr, aSeparator: string;
   EqualsIfNotSeparator, TrimParts: boolean; MinLenghtPartLeft,
   MinLenghtPartRight: integer; out aPartLeft, aPartRight: string): boolean;
begin
   Result:=(aStr<>'');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   StringToWhere('1234|5678:0000');
end;

function ParseSubString(aStr: string; out aWhereField,
   aRelatedTable, aRelatedFieldID, aRelatedFieldCaption, aTabCaption: 
string;
   out aObligatory: boolean): boolean;
begin
   Result:=false;
   aWhereField:='';
   aRelatedTable:='';
   aRelatedFieldID:='';
   aRelatedFieldCaption:='';
   aTabCaption:='';
   aObligatory:=false;

   //Separo el campo del resto
   if not GetSubString(aStr,'|',false,true,2,5,aWhereField,aStr) then
   begin
     //La aStr no es valida
     ShowMessage('Mal');
     exit;
   end;

   if not GetSubString(aStr,':',false,true,2,5,aWhereField,aStr) then
   begin
     //La aStr no es valida
     ShowMessage('Mal');
     exit;
   end;

   ShowMessage('Bien');

   Result:=true;
end;

function TForm1.StringToWhere(aString: string): boolean;
var
   Posicion: integer;
   SubString: string;
   aWhereField: string;
   aRelatedFieldID: string;
   aRelatedFieldCaption: string;
   aRelatedTable: string;
   aTabCaption: string;
   aObligatory: boolean;
begin
   Result:=false;

   //Trato el ultimo elemento
   if not ParseSubString(aString,aWhereField,aRelatedTable,aRelatedFieldID,
     aRelatedFieldCaption,aTabCaption,aObligatory) then
   begin
     //Y salgo
     exit;
   end;

   Result:=true;
end;

end.





More information about the Lazarus-es mailing list