Cita:
Empezado por dec
¡Pero se trata de devolver una cadena de caracteres! Si devolviésemos un "TStrings" claro está que podríamos hacer uso de las propiedades a que haces referencia
|
No me habré explicado con claridad, La primera funcion devuelve un TStrings ¿verdad?, pues simplemente:
- cambiamos el parámetro de salida por String,
- devolvemos CommaText ó DelimitedText, Se acabó el trabajo.
- Liberamos la memoria del TStringList de la función.
Cita:
Empezado por Casimiro Notevi
Esa función GetIps es muy peligrosa, tener que acordarse que no libera la memoria del objeto creado. Es una fuente de posibles problemas. Jamás usaría algo así.
|
Y no solo eso, ya que además, intuitivamente tu creas el TStringList en memoria antes de usar la función, y despues la susodicha, crea de nuevo el TStringList, por tanto, el que tú creaste, se queda en el limbo y jamás se libera.
La solución sería crear algo así:
Código Delphi
[-]
function getIPs(Lista: Tstrings):Boolean;
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: array[0..63] of Char;
I: Integer;
GInitData: TWSAData;
begin
WSAStartup($101, GInitData);
if not Assigned(Lista) then
raise Exception.Create('func GetIps: Se necesita un TString previamente creado.');
Lista.Add('lo que sea');
Un saludo.