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+}
interfaceuses
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.