Ver Mensaje Individual
  #1  
Antiguo 23-12-2011
Avatar de HombreGordo
HombreGordo HombreGordo is offline
Miembro
 
Registrado: jul 2008
Posts: 41
Reputación: 0
HombreGordo Va por buen camino
Unhappy Problema con un procedure en otra unidad

Saludos, hacía mucho tiempo que no escribía por acá... jejeje, ya hasta actualicé mi IDE y todo... Aunque sigo siendo el novato de siempre con ganas de aprender! Mi problema es uno que seguramente ya ustedes habrán resuelto en sus inicios... Tengo un procedure al que le estoy pasando unos parámetros, pero al parecer no pone los valores donde debe ser cuando es llamado.

Primero que nada, hice esto porque si no luego el SetLength me da un error y el procedure parece no reaccionar.
Código Delphi [-]
type
  TStringArray = array of string;
Luego de eso... Tuve que hacer que mi procedure (para que funcionara) de esta manera.
Código Delphi [-]
procedure ParamSetToArray(s: string; aCmds: TStringArray);
var
  count, i, pos: integer;
begin
  s:=Trim(s)+' ';
  count:=CountParams(s);
  SetLength(main.arrayCommands, count+1);
  i:=0;
  pos:=AnsiPos(' ', s);
  while (count >= 0) do begin
    main.arrayCommands[i]:=Copy(s, 1, pos);
    Delete(s, 1, pos);
    pos:=AnsiPos(' ', s);
    i:=i+1;
    count:=count-1;
  end;
end;
En vez de hacer uso del aCmds que le puse, tuve que obviarlo y ponerle el que de una vez quería, pero no es la idea... la idea es que si hago uso de este procedure en otra parte, lo maneje con el que pase en los parámetros... Es decir, cuando le quiera llamar de la siguiente manera:
Código Delphi [-]
ParamSetToArray(editCmd.Text, arrayCommands);
Que deje el resultado sobre el 2ndo parámetro que se le dejó, (así he visto que funciona -por ejemplo- ProcessPath). Gracias!

ACTUALIZADO: Lo he resuelto, es que dejo la pregunta y sigo intentando a ver si doy con la solución jejeje. Reemplacé todos los "main.arrayCommands" por "aCmds" en el bloque de código. También cambié la declaración a "procedure ParamSetToArray(s: string; var aCmds: TStringArray);", me imagino que el "var aCmds" marca la diferencia.
__________________
Aprendiz de Embarcadero RAD Studio...

Última edición por HombreGordo fecha: 23-12-2011 a las 04:02:44. Razón: Resuelto!
Responder Con Cita