PDA

Ver la Versión Completa : Problema con el StringList


Milworm99
09-11-2017, 16:57:01
Hola a toda la comunidad de clubdelphi, tengo un problema, quisiera añadir LICENCIAS a través de un servidor Hosting y que delphi lea las licencias agregadas.

Ejemplo este es mi hosting en donde agregare las licencias: latingamerz.000webhostapp.com/Licencias.txt

Al poner en mi hosting cualquier licencia ejemplo: WD-WAD5G4CKFUCT-0002-0652-BFEB-FBFF-0098-F89D

Quisiera que delphi compruebe las licencias si están agregadas a traves de mi hosting.

Este es el codigo que uso

function existeCadena (lista : TStringList; cadena : string) : boolean;
var
posicion : integer;
begin
lista.Sort;
existeCadena := lista.Find(cadena, posicion);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
LICENCIAS : TStringList;
posicion : integer;
cadenaAComprobar : string;
begin
LICENCIAS:=TStringList.Create;
LICENCIAS.add('WD-WCC3F3CKFUCT-0002-0652-BFEB-FBFF-0098-E3BD');
cadenaAComprobar:=GetIdeDiskSerialNumber + '-' + GetScsiDiskSerialNumber + GetCPUSerialNumber;
posicion := 0;
if existeCadena(LICENCIAS, cadenaAComprobar) then
begin
showMessage('LICENCIA ACTIVADA');
end
else
begin
LICENCIAS.Add(cadenaAComprobar);
showMessage('LICENCIA NO ACTIVADA');
end;
end;
end.

Espero su ayuda !! Gracias.

roman
09-11-2017, 17:54:23
Y, ¿cuál es el problema?

LineComment Saludos

ecfisa
09-11-2017, 17:56:56
Hola.

El método Find (http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Classes_TStringList_Find.html) requiere que la lista esté ordenada.

O bién ordenas la lista antes de la comprobación o podrías evitar la función existeCadena reemplazando el condicional por:

...
if AnsiPos(CadenaAComprobar, LICENCIAS.Text) <> 0 then
...


Saludos :)

Milworm99
09-11-2017, 18:30:40
Lo que quiero es activar licencias mediante un hosting, osea agregar las licencias en el hosting, y quisiera saber cual es el codigo para agregar licencias en un hosting y que delphi lea link del hosting

ecfisa
09-11-2017, 19:13:43
Lo que quiero es activar licencias mediante un hosting, osea agregar las licencias en el hosting, y quisiera saber cual es el codigo para agregar licencias en un hosting y que delphi lea link del hosting
¡ah!... pero eso es una cosa totalmente diferente al título de tu consulta: "Problema con el StringList"

Saludos :)

Milworm99
09-11-2017, 19:33:43
Sii disculpen, ayudenme con mi problema porfavors

movorack
09-11-2017, 20:05:58
Hasta donde entiendo lo que necesitas es crear un WebService (https://es.wikipedia.org/wiki/Servicio_web)
Acá hay un tutorial de como crear uno en Delphi con SOAP (http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Building_a_Hello_World_Web_Services_Application) y acá uno con REST (http://edn.embarcadero.com/article/40452)
y acá un tutorial de nuestro compañero neftalí de como hacer un cliente para un WS en SOAP (http://neftali.clubdelphi.com/35-generacion-de-un-cliente-webservice-en-delphi/) (El tutorial cubre también como hacer el servicio en PHP)
y acá un tutorial de como consumir un servicio REST (http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Tutorial:_Using_the_REST_Client_Library_to_Access_REST-based_Web_Services)

Milworm99
09-11-2017, 20:48:35
No habra otro metodo ?

Milworm99
09-11-2017, 23:23:23
Hola gente de la comunidad Clubdelphi, quisiera que me ayuden a implementar este codigo que uso

Lo que quiero, es activar licencias mediante hosting, osea agregar licencias en mi hosting ejemplo: latingamerz.000webhostapp.com/Licencias.txt
y que delphi lea el link del hosting y se vayan agregando las licencias.

Quisiera que delphi lea si existe las licencias introducida en mi hosting.

Los codigos que uso son estos:

function existeCadena (lista : TStringList; cadena : string) : boolean;
var
posicion : integer;
begin
lista.Sort;
existeCadena := lista.Find(cadena, posicion);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:= GetIdeDiskSerialNumber + '-' + GetScsiDiskSerialNumber + GetCPUSerialNumber;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
LICENCIAS : TStringList;
posicion : integer;
cadenaAComprobar : string;
begin
LICENCIAS:=TStringList.Create;
LICENCIAS.add('WD-WCC3F3CKFUCT-0002-0652-BFEB-FBFF-0098-E3BD');
cadenaAComprobar:=GetIdeDiskSerialNumber + '-' + GetScsiDiskSerialNumber + GetCPUSerialNumber;
posicion := 0;
if existeCadena(LICENCIAS, cadenaAComprobar) then
begin
showMessage('LICENCIA ACTIVADA');
end
else
begin
LICENCIAS.Add(cadenaAComprobar);
showMessage('LICENCIA NO ACTIVADA');
end;
end;
end.

Espero que me ayuden, gracias

aposi
10-11-2017, 00:10:19
busca como descargar el fichero licencias.txt y como cargarlo en el stringlist (tambien lo puedes hacer sin descargar, solo leiendo el contenido por ejemplo con webbrowser)

Milworm99
10-11-2017, 00:26:34
busca como descargar el fichero licencias.txt y como cargarlo en el stringlist (tambien lo puedes hacer sin descargar, solo leiendo el contenido por ejemplo con webbrowser)

Con la funcion downloadfile si puedo hacerlo, pero creo que es mejor leiendo el contenido del servidor hosting

Neftali [Germán.Estévez]
10-11-2017, 10:54:18
Antes de nada Revisa la guía de estilo de los foros (http://www.clubdelphi.com/foros/guiaestilo.php).

No habra otro metodo ?

Si no quieres descargar el fichero, utiliza un WebBrowser.

Crea un proyecto nuevo y coloca un TWebBrowse y un TMemo. En el uses añade mshtml.
En el OnShow del formulario coloca lo siguiente:

WebBrowser1.Navigate('http://latingamerz.000webhostapp.com/Licencias.txt');


Y en el evento NavigateComplete2 del TWebBrowser lo siguiente:

procedure TForm2.WebBrowser1NavigateComplete2(ASender: TObject;
const pDisp: IDispatch; const URL: OleVariant);
var
sTexto : IHTMLElement;
begin
if Assigned(WebBrowser1.Document) then begin
sTexto := (WebBrowser1.Document AS IHTMLDocument2).body;
memo1.Text := sTexto.outerText;
end;
end;


Al ejecutrar tendrás en el TMemo el contenido del TXT que tienes en tu servidor.