Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-03-2009
testosi testosi is offline
Registrado
 
Registrado: sep 2008
Posts: 9
Poder: 0
testosi Va por buen camino
enviar sms por internet desde mi aplicación

Estimados, se que se ha tocado este tema con anterioridad pero he leído creo que la mayoría de los hilos y no he logrado llegar a una solución para enviar sms, desde mi aplicación Delphi a través de Internet, sin importar que tipo de conexión este utilizando. Estaré muy agradecido si en este hilo me indican como hacerlo, sin enviarme a otros hilos.

Desde ya muchas gracias, y disculpen si toco temas ya tratados, pero la verdad no me sirvieron de mucha ayuda los hilos que leí y estoy empezando a desesperarme por tratar de enviar sms desde mi aplicación. Todo lo que he intentado no resultó. Sepan disculpar mi tono de desesperación.

Cordialmente.
TesTosi.
Responder Con Cita
  #2  
Antiguo 09-03-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Hola Testosi,

No soy un experto ni mucho menos, pero creo que para enviar SMS necesitas al menos un módulo GSM (el mc35iT por ejemplo). Teniendo un módulo y sus comandos AT es muy sencillo hacerlo, pero claro esto tiene su coste. Si lo que pretendes es hacer una aplicación que envíe SMS de forma gratuita creo que no se puede.

Saludos!
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #3  
Antiguo 09-03-2009
testosi testosi is offline
Registrado
 
Registrado: sep 2008
Posts: 9
Poder: 0
testosi Va por buen camino
Gracias por responder vejerf, aún así sigo investigando.

Cordialmente.
TesTosi
Responder Con Cita
  #4  
Antiguo 11-03-2009
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 18
BlackDaemon Va por buen camino
Hola

Lo que quieres es enviar un sms utilizando un servicio externo a tu aplicación ? (una web por ejemplo) o quieres enviar un sms desde la misma app utilizando hardware adicional como te comentarion con aterioridad, un modem GSM y comandos AT es fácil, y si tomas la otra opción es igual fácil, solo tendrías que usar el componente idHTTP de las indy y mirar sus funciones get y post y enviar ahí el parametro exacto que recibe el servidor

saludos!
Responder Con Cita
  #5  
Antiguo 12-03-2009
testosi testosi is offline
Registrado
 
Registrado: sep 2008
Posts: 9
Poder: 0
testosi Va por buen camino
Gracias por contestar BlackDaemon, mi intención es enviar por cualquier tipo de medio ya sea por GSM, Banda Ancha, Dial up. O sea necesito que tenga la flexibilidad de enviar a través de una página web (como servidor externo a la aplicación para enviar SMS, que ya encontré) o si conecta un celular a la PC. O sea (y valga la redundancia), las dos opciones que me preguntaste son las que necesito implementar. Te agradeceré mucho si me das una mano.

Cordialmente
TesTosi
Responder Con Cita
  #6  
Antiguo 12-03-2009
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 18
BlackDaemon Va por buen camino
Hola

Si es por las 2 opciones entonces entonces vamos por la que utiliza una aplicación web externa, pero para eso necesito conocer la página, en si lo que hay que hacer como te dije es utilizar o bien idHTTP de los indy o directamente WiniNet para enviar/recibir datos al servidor, ya se por POST o GET, depende como lo haga la aplicación web, sin conocer como lo hace no te puedo decir más, pero la idea va por ahí, puedes buscar en el foro hay muchos ejemplos del envío de parámetros usando las 2 opciones que te di.

Saludos!
Responder Con Cita
  #7  
Antiguo 12-03-2009
testosi testosi is offline
Registrado
 
Registrado: sep 2008
Posts: 9
Poder: 0
testosi Va por buen camino
Gracias por contestar nuevamente, el sitio web es www.radiosabalera.com.ar/sms . Por otro lado ya ví esos hilos son bastantes claros de como usar los métodos POST y GET pero mi inconveniente es como establecer los parámetros de la página web para enviar las peticiones. Te agradecería que ingresaras al sitio indicado y me dijeras cuales son dichos parámetros y como los puedo identificar ya sea para esta página web o para cualquier otra.
Desde ya muchas gracias por tu ayuda.

Cordialmente
TesTosi
Responder Con Cita
  #8  
Antiguo 12-03-2009
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 18
BlackDaemon Va por buen camino
Hola

Bueno, según he visto envían algo así:

-----------------------------2625256275629%0D%0AContent-Disposition%3A+form-data%3B+name=%22enviar%22%0D%0A%0D%0AEnviar%0D%0A-----------------------------2625256275629%0D%0AContent-Disposition%3A+form-data%3B+name&%22numero%22%0D%0A%0D%0Anumero%0D%0A-----------------------------2625256275629%0D%0AContent-Disposition%3A+form-data%3B+name=%22mensaje%22%0D%0A%0D%0Aaqui_el_mensaje%0D%0A-----------------------------2625256275629%0D%0AContent-Disposition%3A+form-data%3B+name&%22sep%22%0D%0A%0D%0A+++%0D%0A-----------------------------2625256275629%0D%0AContent-Disposition%3A+form-data%3B+name=%22remitente%22%0D%0A%0D%0aquielremitente%0D%0A-----------------------------2625256275629--%0D%0A


lo hace aquí:

POST http://sms.whsites.net/control.php HTTP/1.1
Host: sms.whsites.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 Paros/3.2.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Referer: http://sms.whsites.net/phone.php
Content-Type: multipart/form-data; boundary=---------------------------2625256275629
Content-Length: 554

Entonces quedaría enviar por POST algo así

enviarSMS('http://sms.whsites.net/control.php? + todoloantetior);

con "todoloanterior" me refiero al primer chorizo que puse

luego te tendría que responder con algo, seguramente un html donde buscas algo que indique que se enviado correctamente o falló el envío


Saludos!

PD no estoy seguro de que sea así, no lo he probado por que no sé un número válido
Responder Con Cita
  #9  
Antiguo 12-03-2009
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 18
BlackDaemon Va por buen camino
Hola

Bueno, mirando un poco el código he visto que usan un .js para recibir los datos y procesarlos, en si es este

http://sms.whsites.net/phone.js

Pero creo que no les gusta que le miren el código ya que lo tienen codificado con una función, pero bueno, lo decodificas con las mismas funciones de js, bueno, yo no sé js pero mirando el código veo que usan unescape y busqué por ello en google y fácilmente pude leer el texto ya entendible, el cual pondré a continuación para que veas lo que hacen, y los campos en si

Código PHP:
/* COPYRIGHT (C)2007 WWW.iSMS.COM.AR */ document.write(unescape("<script type="text/javascript">
function home() { 
if (window==window.top) { 
window.location='http://sms.radiosabalera.com.ar/'; 


if (window==window.top) { 
window.location='http://sms.radiosabalera.com.ar/'; 


if(window.opera) { 
window.history.go(1); 


var css_browser_selector = function() {var ua=navigator.userAgent.toLowerCase(),is=function(t){return ua.indexOf(t) != -1;},h=document.getElementsByTagName('html')[0],b=(!(/opera|webtv/i.test(ua))&&/msie\s(\d)/.test(ua))?('ie ie'+RegExp.$1):is('firefox/2')?'gecko ff2':is('firefox/3')?'gecko ff3':is('gecko/')?'gecko':is('opera/9')?'opera opera9':/opera\s(\d)/.test(ua)?'opera opera'+RegExp.$1:is('konqueror')?'konqueror':is('chrome')?'chrome webkit safari':is('applewebkit/')?'webkit safari':is('mozilla/')?'gecko':'',os=(is('x11')||is('linux'))?' linux':is('mac')?' mac':is('win')?' win':'';var c=b+os+' js'; h.className += h.className?' '+c:c;}(); 

function buttonSt(o, sens) { 
if(o) { 
if(sens == 1) { 
o.style.backgroundColor = '#E0DFE3'; 
o.style.cursor = 'default'; 
}else{ 
o.style.backgroundColor = '#CFCED2'; 
o.style.cursor = 'default'; 




//onsubmit="
setTimeout('sysReset()',300); return true;
function sysReset() { 
var i; 
for (i = 0; (i < document.forms.length); i++) { 
document.forms[i].reset(); 
document.sms.numero.value = ''; 
document.sms.mensaje.value = ''; 
document.sms.remitente.value = ''; 



//onkeypress="
return isnumberkey(event);
function isnumberkey(evt) { 
var charCode = (evt.which) ? evt.which : event.keyCode 
if (charCode > 31 && (charCode < 48 || charCode > 57)) 
return false; 
return true; 


//onkeyup="
return ismaxlength(this);
function ismaxlength(obj) { 
var mlength=obj.getAttribute? parseInt(obj.getAttribute('maxlength')) : '' 
if (obj.getAttribute && obj.value.length>mlength) 
obj.value=obj.value.substring(0,mlength) 


function waitSt() { 
document.getElementById('numero').style.color = '#9696A0'; 
document.getElementById('mensaje').style.color = '#9696A0'; 
document.getElementById('remitente').style.color = '#9696A0'; 


function readySt() { 
document.getElementById('numero').style.color = '#5A5A65'; 
document.getElementById('mensaje').style.color = '#5A5A65'; 
document.getElementById('remitente').style.color = '#5A5A65'; 


function toSend() { 
//soundManager.play('button'); 
window.focus(); 
waitSt(); 


function toReset() { 
//soundManager.play('button'); 
window.focus(); 
waitSt(); 
sysReset(); 
reset(); 


var isIE = navigator.appName.toLowerCase().indexOf('internet explorer')+1; 
var isMac = navigator.appVersion.toLowerCase().indexOf('mac')+1; 

function SoundManager(container) { 
// DHTML-controlled sound via Flash 
var self = this; 
this.movies = []; // movie references 
this.container = container; 
this.unsupported = 0; // assumed to be supported 
this.defaultName = 'default'; // default movie 
  
this.FlashObject = function(url) { 
var me = this; 
this.o = null; 
this.loaded = false; 
this.isLoaded = function() { 
if (me.loaded) return true; 
if (!me.o) return false; 
me.loaded = ((typeof(me.o.readyState)!='undefined' && me.o.readyState == 4) || (typeof(me.o.PercentLoaded)!='undefined' && me.o.PercentLoaded() == 100)); 
return me.loaded; 

this.mC = document.createElement('div'); 
this.mC.className = 'movieContainer'; 
with (this.mC.style) { 
// "
hide" flash movie 
position = 'absolute'; 
left = '-256px'; 
width = '64px'; 
height = '64px'; 

var html = ['<object classid="
clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"><param name="movie" value="'+url+'"><param name="quality" value="high"></object>','<embed src="'+url+'" width="1" height="1" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>']; 
if (navigator.appName.toLowerCase().indexOf('microsoft')+1) { 
this.mC.innerHTML html[0]; 
this.this.mC.getElementsByTagName('object')[0]; 
} else { 
this.mC.innerHTML html[1]; 
this.this.mC.getElementsByTagName('embed')[0]; 

document.getElementsByTagName('div')[0].appendChild(this.mC); 


this.addMovie = function(movieName,url) { 
self.movies[movieName] = new self.FlashObject(url); 


this.checkMovie = function(movieName) { 
movieName movieName||self.defaultName
if (!
self.movies[movieName]) { 
self.errorHandler('checkMovie','Exception: Could not find movie',arguments); 
return 
false
} else { 
return (
self.movies[movieName].isLoaded())?self.movies[movieName]:false



this.errorHandler = function(methodName,message,oArguments,e) { 
writeDebug('<div class="error">soundManager.'+methodName+'('+self.getArgs(oArguments)+'): '+message+(e?' ('+e.name+' - '+(e.message||e.description||'no description'):'')+'.'+(e?')':'')+'</div>'); 


this.play = function(soundID,loopCount,noDebug,movieName) { 
if (
self.unsupported) return false
movie self.checkMovie(movieName); 
if (!
movie) return false
if (
typeof(movie.o.TCallLabel)!='undefined') { 
try { 
self.setVariable(soundID,'loopCount',loopCount||1,movie); 
movie.o.TCallLabel('/'+soundID,'start'); 
if (!
noDebugwriteDebug('soundManager.play('+self.getArgs(arguments)+')'); 
} catch(
e) { 
self.errorHandler('play','Failed: Flash unsupported / undefined sound ID (check XML)',arguments,e); 




this.stop = function(soundID,movieName) { 
if (
self.unsupported) return false
movie self.checkMovie(movieName); 
if (!
movie) return false
try { 
movie.o.TCallLabel('/'+soundID,'stop'); 
writeDebug('soundManager.stop('+self.getArgs(arguments)+')'); 
} catch(
e) { 
// Something blew up. Not supported? 
self.errorHandler('stop','Failed: Flash unsupported / undefined sound ID (check XML)',arguments,e); 



this.getArgs = function(params) { 
var 
params?params.length:0
if (!
x) return ''
var 
result ''
for (var 
i=0i<xi++) { 
result += (i&&i<x?', ':'')+(params[i].toString().toLowerCase().indexOf('object')+1?typeof(params[i]):params[i]); 

return 
result 


this.setVariable = function(soundID,property,value,oMovie) { 
// set Flash variables within a specific movie clip 
if (!oMovie) return false
try { 
oMovie.o.SetVariable('/'+soundID+':'+property,value); 
// writeDebug('soundManager.setVariable('+self.getArgs(arguments)+')'); 
} catch(e) { 
// d'oh 
self.errorHandler('setVariable','Failed',arguments,e); 



this.setVariableExec = function(soundID,fromMethodName,oMovie) { 
try { 
oMovie.o.TCallLabel('/'+soundID,'setVariable'); 
} catch(
e) { 
self.errorHandler(fromMethodName||'undefined','Failed',arguments,e); 



this.callMethodExec = function(soundID,fromMethodName,oMovie) { 
try { 
oMovie.o.TCallLabel('/'+soundID,'callMethod'); 
} catch(
e) { 
// Something blew up. Not supported? 
self.errorHandler(fromMethodName||'undefined','Failed',arguments,e); 



this.callMethod = function(soundID,methodName,methodParam,movieName) { 
movie self.checkMovie(movieName||self.defaultName); 
if (!
movie) return false
self.setVariable(soundID,'jsProperty',methodName,movie); 
self.setVariable(soundID,'jsPropertyValue',methodParam,movie); 
self.callMethodExec(soundID,methodName,movie); 


this.setPan = function(soundID,pan,movieName) { 
self.callMethod(soundID,'setPan',pan,movieName); 


this.setVolume = function(soundID,volume,movieName) { 
self.callMethod(soundID,'setVolume',volume,movieName); 

// constructor - create flash objects 
if (isIE && isMac) { 
this.unsupported 1


if (!
this.unsupported) { 
this.addMovie(this.defaultName,'soundcontroller.swf'); 
// this.addMovie('rc','rubber-chicken-audio.swf'); 



function 
SoundManagerNull() { 
// Null object for unsupported case 
this.movies = []; // movie references 
this.container null
this.unsupported 1
this.FlashObject = function(url) {} 
this.addMovie = function(name,url) {} 
this.play = function(movieName,soundID) { 
return 
false

this.defaultName 'default'


function 
writeDebug(msg) { 
var 
document.getElementById('debugContainer'); 
if (!
o) return false
var 
document.createElement('div'); 
d.innerHTML msg
o.appendChild(d); 


var 
soundManager null

function 
soundManagerInit() { 
soundManager = new SoundManager(); 


function 
successSound() { 
soundManager.play('success'); 

</script>")) 
Aquí vemos claramente el nombre de los campos

document.sms.numero.value = '';
document.sms.mensaje.value = '';
document.sms.remitente.value = '';

Saludos!
Responder Con Cita
  #10  
Antiguo 12-03-2009
testosi testosi is offline
Registrado
 
Registrado: sep 2008
Posts: 9
Poder: 0
testosi Va por buen camino
Estimado BlackDaemon, lo indicado en la Respuesta Nro. #8 no se como implementarlo en Delphi. Te agradecería si pudieras ser un poco más claro.
Y con respecto a la #9, no lo puedo probar en estos momentos ya que estoy en mi trabajo, pero cuando lo haga te comento.

Gracias por tu ayuda.

Cordialmente
TesTosi
Responder Con Cita
  #11  
Antiguo 02-01-2011
tomast tomast is offline
Registrado
NULL
 
Registrado: ene 2010
Posts: 1
Poder: 0
tomast Va por buen camino
tienes que comprobar 2-waysms.com
Responder Con Cita
  #12  
Antiguo 05-01-2011
webmasterplc webmasterplc is offline
Miembro
 
Registrado: mar 2008
Posts: 274
Poder: 17
webmasterplc Va por buen camino
Hermano Como Estas Yo Estoy Haciendo Algo Parecido A Lo Que Necesitas Pero Ya Me Esta Funcionando, Hay Que Saber Si Usas Un Gateway O Algo El Que Yo Estoy Desarrollando Es Mediante Post O Get, Aunq8ue Se Me Va A Complicar Porque Aun No S Eme Permite Colocar Direcciones Web Y En El Codigo Uso Eso Saludos Dame Datos Y Te Ayudo
Responder Con Cita
  #13  
Antiguo 10-01-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Hola, en la web www.altiria.net tienes todo lo que necesitas para enviar sms desde tu aplicación. Te facilitan los componentes para integrarlos en tu aplicación sin grandes problemas. Lo único es que los mensajes son pagados, tienes que comprar bonos de X mensajes para poder enviarlos.

Saludos
Responder Con Cita
  #14  
Antiguo 10-01-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por webmasterplc Ver Mensaje
Hermano Como Estas Yo Estoy Haciendo Algo Parecido A Lo Que Necesitas Pero Ya Me Esta Funcionando, Hay Que Saber Si Usas Un Gateway O Algo El Que Yo Estoy Desarrollando Es Mediante Post O Get, Aunq8ue Se Me Va A Complicar Porque Aun No S Eme Permite Colocar Direcciones Web Y En El Codigo Uso Eso Saludos Dame Datos Y Te Ayudo
¿Y por qué escribes de esa manera?, debe ser pesado estar pulsando la mayúscula en cada palabra
Responder Con Cita
  #15  
Antiguo 10-01-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Y por qué escribes de esa manera?, debe ser pesado estar pulsando la mayúscula en cada palabra
Jajajaja. Yo también noté esa peculiar forma de escribir de este muchacho. Pero créeme que no está sólo. Yo personalmente conozco a dos personas ya bien adultas que escriben de esta manera. Es costumbre y su manera de escribir incluso a mano. De la misma forma en que algunos escriben en letra de carta y otros lo hacemos en molde. Incluso hay algunos que combinan ambos tipos de letras.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #16  
Antiguo 10-01-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sí, aunque lo decía un poco por llamar la atención, me parece que el vbulletin hace eso cuando se ha escrito todo en mayúsculas
Voy a probar.
Responder Con Cita
  #17  
Antiguo 10-01-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Esto Es Una Prueba Todo En Mayúsculas... Veremos Cómo Sale.
Responder Con Cita
  #18  
Antiguo 10-01-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
je.je.je... es eso, que escribe TODO en mayúsculas.

Seguramente no ha leído nuestra guía de estilo.
Responder Con Cita
  #19  
Antiguo 22-09-2011
Jose_salazar Jose_salazar is offline
Registrado
 
Registrado: sep 2011
Posts: 2
Poder: 0
Jose_salazar Va por buen camino
hola webmasterplc como hago para ver el codigo fuente estoy tratando de hacer algo parecido pero tengo muchas dudas
Responder Con Cita
  #20  
Antiguo 22-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Jose_salazar Ver Mensaje
hola webmasterplc como hago para ver el codigo fuente estoy tratando de hacer algo parecido pero tengo muchas dudas
Bienvenido a clubdelphi, por favor, no olvides leer nuestra guía de estilo, gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como enviar sms a celular desde aplicacion! JuanErasmo API de Windows 0 18-05-2007 00:32:25
enviar un mensaje a un celular desde una aplicacion delphi chabelo07 Internet 1 29-11-2006 21:17:23
Enviar datos via internet JULIPO Internet 0 05-10-2006 07:54:28
Como enviar un mail desde una aplicacion herodes Varios 3 20-04-2005 17:20:17
Enviar texto por Internet Silver Internet 3 19-05-2004 08:10:31


La franja horaria es GMT +2. Ahora son las 11:30:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi