[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