DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 
DevWare  
Novidade: DevMedia lança o DevWare - Saiba mais!

Fórum DevMedia


Autor
Mensagem
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 20/1/2011 01:46:41 PM
 
Amigos

Como consigo comparar o valor de um memo com um valor gravado no .INI.

Exemplo:

if memo.lines.texto = c:\arquivo.ini
then
abort
else
IPwatch.SendMail

Simplifiquei o exemplo, mas a idéia do programa é a seguinte:
Toda vez que executa o programa ele verifica o IP da máquina e envia pra um e-mail. Se o valor do IP atual for igual ao do arquivo memo, ele aborta o envio, ou seja, só enviará o e-mail quando o IP for alterado (no caso de IP dinâmico).

Segue o código no Form.Show, não está rolando desse jeito.

#Código
procedure TIPLocal.FormShow(Sender: TObject);
begin
  mmoShowIP.Lines := IdIPAddrMon.IPAddresses;
  IPCfg := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'IP_Local.ini');
  mmoIPAntigo.Lines.Text := IPCfg.ReadString('IPLocal','IP Local:', '');
  if mmoIPAntigo.Lines = IdIPAddrMon.IPAddresses then
  begin
    Application.MessageBox('E-mail não enviado!',
      'Confirmação', MB_OK + MB_ICONWARNING);
    Abort;
  end
  else
  IdSMTP.Host := edtHost.Text;
  IdSMTP.Username := edtUser.Text;
  IdSMTP.Password := edtSenha.Text;
  IdSMTP.Port := StrToInt(edtPort.Text);

  IdMessage.Recipients.EMailAddresses := edtPara.Text;
  IdMessage.Subject := edtAssunto.Text;
  IdMessage.Body := mmoShowIP.Lines;
  IdSMTP.Connect;

  try
    IdSMTP.Send(IdMessage)
  finally
    IPCfg.WriteString('IPLocal','IP Local:', mmoShowIP.Lines.Text);
    IdSMTP.Disconnect;
    IPCfg.Free;
  end;
end;


LEONARDO XAVIER
 

 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 20/1/2011 02:41:00 PM
 
Ja tentou assim, Coloque o seu arquivo texto para ser lido pelo seu sistema ou coloque uma tabela no seu banco de dados que grave todos os ips utilizados por aquela maqui. De posse deste dado de ip tente o seguinte código.

#Código
if memo.lines[1].text = (seu campo de IP ou variavel )
then
abort
else
IPwatch.SendMail


Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 20/1/2011 03:06:28 PM
 
Neste caso não vale a pena criar o BD, porque toda vez que reiniciarem o servidor na loja vai receber um IP novo.
A idéia é só garvar no INI mesmo, pra não precisar ligar na loja toda vez que reiniciarem o server.
Hoje funciona bem, o único problema é que mesmo que o IP não tenha sido renovado, é enviado o e-mail, porque o programa está no inicializar do Windows, ou seja, mesmo se efetuarem logoff/logon o programa será executado.
Valeu a dica, mas pode ser mais simples, sem precisar do BD.

Acredito que a lógica esteje condizente. O problema é que não está rolando.

LEONARDO XAVIER
 

 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 20/1/2011 03:24:27 PM
 
você ja tem alguma função ou procedure para gravar este ip em um arquivo de texto?
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 20/1/2011 03:27:55 PM
 
Sim! Essa parte do código é para gravar o INI
#Código
IPCfg := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'IP_Local.ini');
IPCfg.WriteString('IPLocal','IP Local:', mmoShowIP.Lines.Text);


LEONARDO XAVIER
 

 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 20/1/2011 03:32:36 PM
 

Citação:
Sim! Essa parte do código é para gravar o INI
#Código
IPCfg := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'IP_Local.ini');
IPCfg.WriteString('IPLocal','IP Local:', mmoShowIP.Lines.Text);



Certo, e você ja conseguiu ler este arquivo pelo seu sistema?

Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 20/1/2011 03:40:27 PM
 
Sim.
Já tentei de duas maneiras.
Mandei o valor do INI pra um novo memo denominado mmoIPAntigo e também ler direto, mas não funciona.
O estranho é que ficam os dois memos na tela com os valores diferentes e ainda assim não obedece o argumento.

Essa parte lê o INI
#Código
mmoIPAntigo.Lines.Text := IPCfg.ReadString('IPLocal','IP Local:', '');


LEONARDO XAVIER
 

 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 20/1/2011 03:42:22 PM
 
Você pode colocar a qui somente a parte do codigo que você esta utilizando para fazer a comparaçao?
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 20/1/2011 03:53:37 PM
 
Oi amigo.

Tá no primeiro post.

LEONARDO XAVIER
 

 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 20/1/2011 04:07:45 PM
 
Testei aqui o mesmo raciocício seu. e consegui o seguinte:

#Código
var
a,b:string;
begin
a:=Memo1.Lines.Text;
b:=Memo2.Lines.Text;
if a<>b then begin
   ShowMessage('São diferntes');
end else begin
   Showmessage('São iguais');
end;


Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 20/1/2011 04:22:03 PM
 
Sem chance :(

#Código
procedure TIPLocal.FormShow(Sender: TObject);
var
a, b : TStrings;
begin
  mmoShowIP.Lines := IdIPAddrMon.IPAddresses;
  IPCfg := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'IP_Local.ini');
  mmoIPAntigo.Lines.Text := IPCfg.ReadString('IPLocal','IP Local:', '');
  a := mmoShowIP.Lines;
  b := mmoIPAntigo.Lines;
  if a <> b then
  begin
    Application.MessageBox('É necessário configurar o remetente e destinatário!',
      'Confirmação', MB_OK + MB_ICONWARNING);
    IPCfg.WriteString('IPLocal','IP Local:', mmoShowIP.Lines.Text);
    Abort;
  end
  else
  IdSMTP.Host := edtHost.Text;
  IdSMTP.Username := edtUser.Text;
  IdSMTP.Password := edtSenha.Text;
  IdSMTP.Port := StrToInt(edtPort.Text);

  IdMessage.Recipients.EMailAddresses := edtPara.Text;
  IdMessage.Subject := edtAssunto.Text;
  IdMessage.Body := mmoShowIP.Lines;
  IdSMTP.Connect;

  try
    IdSMTP.Send(IdMessage)
  finally
    IPCfg.WriteString('IPLocal','IP Local:', mmoShowIP.Lines.Text);
    IdSMTP.Disconnect;
    IPCfg.Free;
  end;
end;


De todo jeito ele aborta o envio, ou seja, estando a= x e b = x ou a = x e b = y.

Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 20/1/2011 04:26:16 PM
 
E para testar eu fiz:
#Código
procedure TForm1.btn1Click(Sender: TObject);
var
a, b : string;
begin
  a := mmo1.Lines.Text;
  b := mmo2.Lines.Text;
  if a <> b then
  begin
    Application.MessageBox('Não são iguais!', 'Aviso!', MB_OK +
    MB_ICONWARNING);
  end
  else
  begin
    Application.MessageBox('São iguais!', 'Aviso!', MB_OK + 
    MB_ICONWARNING);
  end;
end;


E funciona! Assim funciona! Vai saber :(

LEONARDO XAVIER
 

 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 20/1/2011 04:27:11 PM
 
Você verificou se os espaçamentos após os ips estão iguais? pois aqui se eu colocar por exemplo:

MEMO1            MEMO2

leonardo         Leonardo(+espaço)

ele dá como diferentes.

Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 20/1/2011 04:31:54 PM
 
Hahaha...o mais louco nissotudo  é que eu coloco
a = b ele não aborta e envia o e-mail...kkk

Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 20/1/2011 04:33:13 PM
 
Leonardo,
Nesse caso não há como ter espaço porque a gravação é automática, não foi digitada por ninguém.
Em todo o caso eu verifiquei e não há espaços...:/

MARCO ANTONIO SALLES
 
 

 


País: Brasil
Estado: MG
Cidade: Muriae
Mensagens: 1702
 Postado em: 20/1/2011 04:35:09 PM
 
o Delphi tem função nativa que compara String   AnsiCompareText > case Sensitive AnsiCompareStr > case InSensitive   Vc usa a Propriedade Memo.Lines.Text e do Arquivo Ini carrega-o em um StringList   #Código
var
 StrIni:TStrings;
 StrMem:String;
begin
    StrIni:=TStringList.Create;
    try
      strIni.LoadFromFile('C:\zzPodeApagar\teste.ini');
      StrMem:=Memo1.Lines.Text;
      if AnsiCompareText(StrIni.Text,StrMem) = 0 then
        Showmessage('Iguais')
      else
        Showmessage('Diferentes')
    finally
       StrIni.Free;
    end;

MARCO ANTONIO SALLES
 
 

 


País: Brasil
Estado: MG
Cidade: Muriae
Mensagens: 1702
 Postado em: 20/1/2011 04:40:57 PM
 
o Delphi tem função nativa que compara String   AnsiCompareText > case Sensitive AnsiCompareStr > case InSensitive   Vc usa a Propriedade Memo.Lines.Text e do Arquivo Ini carrega-o em um StringList   #Código
var
 StrIni:TStrings;
 StrMem:String;
begin
    StrIni:=TStringList.Create;
    try
      strIni.LoadFromFile('C:\zzPodeApagar\teste.ini');
      StrMem:=Memo1.Lines.Text;
      if AnsiCompareText(StrIni.Text,StrMem) = 0 then
        Showmessage('Iguais')
      else
        Showmessage('Diferentes')
    finally
       StrIni.Free;
    end;

LEONARDO XAVIER
 

 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 20/1/2011 04:50:00 PM
 

Citação:
o Delphi tem função nativa que compara String   AnsiCompareText > case Sensitive AnsiCompareStr > case InSensitive   Vc usa a Propriedade Memo.Lines.Text e do Arquivo Ini carrega-o em um StringList   #Código
var
 StrIni:TStrings;
 StrMem:String;
begin
    StrIni:=TStringList.Create;
    try
      strIni.LoadFromFile('C:\zzPodeApagar\teste.ini');
      StrMem:=Memo1.Lines.Text;
      if AnsiCompareText(StrIni.Text,StrMem) = 0 then
        Showmessage('Iguais')
      else
        Showmessage('Diferentes')
    finally
       StrIni.Free;
    end;

Nào conhecia esta função muito bom.

Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 20/1/2011 05:14:32 PM
 
Desculpe, mas não consegui implementar isso no código.

O código está assim:

Sendo que quando essa parte está assim:
  if mmoIPAntigo.Lines <> mmoShowIP.Lines then
VAI PRO PONTO 1

Se está assim:
  if mmoIPAntigo.Lines = mmoShowIP.Lines then
VAI PRO PONTO 2

#Código
procedure TIPLocal.FormShow(Sender: TObject);
begin
  IPCfg := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'IP_Local.ini');
  mmoShowIP.Lines := IdIPAddrMon.IPAddresses;
  mmoIPAntigo.Lines.Text := IPCfg.ReadString('IPLocal','IP Local:', '');
  if mmoIPAntigo.Lines <> mmoShowIP.Lines then
  begin // PONTO 1
    Application.MessageBox('O e-mail não foi enviado!',
      'Confirmação', MB_OK + MB_ICONWARNING);
    Abort;
  end
  else
  begin // PONTO 2
    IdSMTP.Host := edtHost.Text;
    IdSMTP.Username := edtUser.Text;
    IdSMTP.Password := edtSenha.Text;
    IdSMTP.Port := StrToInt(edtPort.Text);

    IdMessage.Recipients.EMailAddresses := edtPara.Text;
    IdMessage.Subject := edtAssunto.Text;
    IdMessage.Body := mmoShowIP.Lines;
    IdSMTP.Connect;

    try
      IdSMTP.Send(IdMessage)
    finally
      IPCfg.WriteString('IPLocal','IP Local:', mmoShowIP.Lines.Text);
      IdSMTP.Disconnect;
      IPCfg.Free;
    end;
  end;
end;


Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 20/1/2011 05:21:14 PM
 
Desculpe...esqueci de postar o erro

Dentre todos, acho que esse é o principal:

[Pascal Error] Unit1.pas(34): E2003 Undeclared identifier: 'LoadFromFile'

MARCO ANTONIO SALLES
 
 

 


País: Brasil
Estado: MG
Cidade: Muriae
Mensagens: 1702
 Postado em: 20/1/2011 05:47:10 PM
 

Citação:
Desculpe...esqueci de postar o erro

Dentre todos, acho que esse é o principal:

[Pascal Error] Unit1.pas(34): E2003 Undeclared identifier: 'LoadFromFile'
Mas não parece que vc esta usando isto .. na sua ultima postagem não tem esta propriedade Onde ela esta aparecendo ???

Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 21/1/2011 08:58:23 AM
 
Oi Marco,

Eu fiz um teste com seu exemplo em novo projeto pra ver o funcionamento e já deu o erro.

Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 21/1/2011 02:21:00 PM
 
Testei com edit e a rotina funciona.
Só quan há memos que da pau...O que pode ser hein?
Testei também com dois novos memos onde inseri o mesmo conteúdo para ambos e continua dando pau.

MARCO ANTONIO SALLES
 
 

 


País: Brasil
Estado: MG
Cidade: Muriae
Mensagens: 1702
 Postado em: 21/1/2011 02:55:17 PM
 

Citação:
Oi Marco,

Eu fiz um teste com seu exemplo em novo projeto pra ver o funcionamento e já deu o erro.
. Mas tem que ver como vc esta fazendo   A função não é minha é Nativa do Delphi   Tem que ver se o erro é de compilação , de execução ..   Tem que colocar o codigo para poder ananlisar

Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 24/1/2011 09:35:36 AM
 
Hoje está assim:

O código está assim:

Sendo que quando essa parte está assim:
  if mmoIPAntigo.Lines <> mmoShowIP.Lines then
VAI PRO PONTO 1

Se está assim:
  if mmoIPAntigo.Lines = mmoShowIP.Lines then
VAI PRO PONTO 2

#Código
procedure TIPLocal.FormShow(Sender: TObject);
begin
  IPCfg := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'IP_Local.ini');
  mmoShowIP.Lines := IdIPAddrMon.IPAddresses;
  mmoIPAntigo.Lines.Text := IPCfg.ReadString('IPLocal','IP Local:', '');
  if mmoIPAntigo.Lines <> mmoShowIP.Lines then
  begin // PONTO 1
    Application.MessageBox('O e-mail não foi enviado!',
      'Confirmação', MB_OK + MB_ICONWARNING);
    Abort;
  end
  else
  begin // PONTO 2
    IdSMTP.Host := edtHost.Text;
    IdSMTP.Username := edtUser.Text;
    IdSMTP.Password := edtSenha.Text;
    IdSMTP.Port := StrToInt(edtPort.Text);

    IdMessage.Recipients.EMailAddresses := edtPara.Text;
    IdMessage.Subject := edtAssunto.Text;
    IdMessage.Body := mmoShowIP.Lines;
    IdSMTP.Connect;

    try
      IdSMTP.Send(IdMessage)
    finally
      IPCfg.WriteString('IPLocal','IP Local:', mmoShowIP.Lines.Text);
      IdSMTP.Disconnect;
      IPCfg.Free;
    end;
  end;
end;

* Pior, independente de usar edit ou memo.

MARCO ANTONIO SALLES
 
 

 


País: Brasil
Estado: MG
Cidade: Muriae
Mensagens: 1702
 Postado em: 24/1/2011 09:54:49 AM
 
sugiro que use a funçao nativa do delphi  AnsiCompareText ( naõ lembro se ela é case sensitive ou case insesitive)   declare na uses SysUtils; //delphi 2010  
Citação:

#Código


procedure TIPLocal.FormShow(Sender: TObject);
begin
  IPCfg := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'IP_Local.ini');
  mmoShowIP.Lines := IdIPAddrMon.IPAddresses;
  mmoIPAntigo.Lines.Text := IPCfg.ReadString('IPLocal','IP Local:', '');
  if AnsiCompareText(mmoIPAntigo.Lines,mmoShowIP.Lines) <> 0 then
  begin // PONTO 1
    Application.MessageBox('O e-mail não foi enviado!',
      'Confirmação', MB_OK + MB_ICONWARNING);
    Abort;
  end
  else
  begin // PONTO 2
    IdSMTP.Host := edtHost.Text;
    IdSMTP.Username := edtUser.Text;
    IdSMTP.Password := edtSenha.Text;
    IdSMTP.Port := StrToInt(edtPort.Text);

    IdMessage.Recipients.EMailAddresses := edtPara.Text;
    IdMessage.Subject := edtAssunto.Text;
    IdMessage.Body := mmoShowIP.Lines;
    IdSMTP.Connect;

    try
      IdSMTP.Send(IdMessage)
    finally
      IPCfg.WriteString('IPLocal','IP Local:', mmoShowIP.Lines.Text);
      IdSMTP.Disconnect;
      IPCfg.Free;
    end;
  end;
end;



Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 24/1/2011 10:11:56 AM
 
O que você passou fiz assim:

#Código
procedure TForm1.btn1Click(Sender: TObject);
var
StrIni : TStrings;
StrMem : string;
begin
  StrIni := TStrings.Create;
  try
    StrIni := LoadFromFile('C:\TEMP\testeIP.ini');
    StrMem := mmo1.Lines.Text;
    if AnsiCompareText(StrIni.Text.StrMem) = 0 then
    ShowMessage('São Iguais')
    else
    ShowMessage('Diferentes');
  finally
    StrIni.Free;
  end;
end;
end.


O SysUtils já está declarado e gera o erro:
[Pascal Error] Unit1.pas(34): E2003 Undeclared identifier: 'LoadFromFile'

Valeu Marco. Aguardo ajuda ;)

Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 24/1/2011 10:18:30 AM
 
Oi Marco,

Coloquei o que você passou.
Só alterei essa parte:
  if AnsiCompareText(mmoIPAntigo.Lines.Text, mmoShowIP.Lines.Text) = 0 then
Colocando .Text.

Ocorre a mesma situação.

Se coloca = vai pro ponto 2, se coloca <> vai pro ponto 1


LEONARDO XAVIER
 

 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 24/1/2011 10:33:32 AM
 
Teria como você postar em um servidor o arquivo de texto que seu sistema gera com o ip antigo? Esta muito estranho este seu caso pois ja deveria ter dado certo, se tiver possivilidade de você fazer um upload deste arquivo, mas colocando o arquivo fiel, ao encontrado no computador em questão, pois de posse deste arquivo faço para você um sisteminha para esta comparaçao e te passo o fonte. Abraços.
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 24/1/2011 10:49:26 AM
 
Coloquei o projeto todo.

http://rapidshare.com/files/444271747/Show_IP.rar


MARCO ANTONIO SALLES
 
 

 


País: Brasil
Estado: MG
Cidade: Muriae
Mensagens: 1702
 Postado em: 24/1/2011 10:57:48 AM
 

Citação:
Oi Marco,

Coloquei o que você passou.
Só alterei essa parte:
  if AnsiCompareText(mmoIPAntigo.Lines.Text, mmoShowIP.Lines.Text) = 0 then
Colocando .Text.

Ocorre a mesma situação.

Se coloca = vai pro ponto 2, se coloca <> vai pro ponto 1

..     Então muda ..     if AnsiCompareText(mmoIPAntigo.Lines.Text, mmoShowIP.Lines.Text) = 0 then   para   if AnsiCompareText(mmoIPAntigo.Lines.Text, mmoShowIP.Lines.Text) <> 0 then

 

LEONARDO XAVIER
 

 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 24/1/2011 11:38:22 AM
 
Muito bom seu sistema...Código bem limpo. Parabéns. Compilei ele aqui no delphi 2010. logo quando compilo ele esta mencionando um erro de """" nao é um integer válido. depois deste erro ele compila. ahcei interesante pois aqui no meu computador no espaço de ip atual aparecem dois ips, um do meu computador e outro do roteador, e logo abaixo no ip atual apenas o do meu computador. o que com toda certeza irá dar sempre diferente as comparaçoes. Isso acontece ai com você tambem, ou é um caso do meu computador com windows 7. 
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 24/1/2011 11:43:30 AM
 
O que ele faz na primeira vez é gravar o que exibe no memo de cima no arquivo INI.
Quando abrir novamente, o memo abaixo exibe o que está no INI, se o IP for alterado, então não serão mais iguais. Aí nessa situação deveria enviar um e-mail, se o IP não for alterado então os dois memos serão iguais. Valeu pelo elogio, com certeza os amigos aqui do DevMedia me ensinaram isso também...rsrs
Configure tudo e tente novamente, após a gravação do INI deve ocorrer normal, salvo o problema de comparar para enviar ou não o e-mail.

LEONARDO XAVIER
 

 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 24/1/2011 11:58:53 AM
 

Citação:
O que ele faz na primeira vez é gravar o que exibe no memo de cima no arquivo INI.
Quando abrir novamente, o memo abaixo exibe o que está no INI, se o IP for alterado, então não serão mais iguais. Aí nessa situação deveria enviar um e-mail, se o IP não for alterado então os dois memos serão iguais. Valeu pelo elogio, com certeza os amigos aqui do DevMedia me ensinaram isso também...rsrs
Configure tudo e tente novamente, após a gravação do INI deve ocorrer normal, salvo o problema de comparar para enviar ou não o e-mail.


Certo mas o fato do sistema me dar o ip de minha máquina e do roteador no mesmo memo antigo, acontece isso com vc?

MARCO ANTONIO SALLES
 
 

 


País: Brasil
Estado: MG
Cidade: Muriae
Mensagens: 1702
 Postado em: 24/1/2011 01:13:57 PM
 
Acontece que vc esta carregando o memo de dois modos distintos   Apesar que para nos a plho nu os Ips são iguais e portanto deveriam serem iguais o teste com o AnsiCompareText enxerga bit a bit ( se pudermos falar assim ) Ocorre algumas Strings de formatação numa string que para nos não tem efeito ( o Victor escreveu um artigo recentemente sobre o Tema String)   Veja como vc esta carregandp     mmoShowIP.Lines := IdIPAddrMon.IPAddresses;
  mmoIPAntigo.Lines.text := IPCfg.ReadString('IPLocal','IP Local:', '');   Um vc usa a propreidade TStrings e no Outro Vc usa a Propriedade Text   Isto que esta causando o Erro   Mude para     mmoShowIP.Lines.CommaText := IdIPAddrMon.IPAddresses.CommaText;
  mmoIPAntigo.Lines.CommaText := IPCfg.ReadString('IPLocal','IP Local:', '');   e na comparação Use    if AnsiCompareText(mmoIPAntigo.Lines.Text, mmoShowIP.Lines.Text) = 0 then   Qnd forem Iguais Ira Executar o Ponto1   Wnd Forem Diferentes ira Executar o Ponto 2   Se sua Logica for Contrária eu não sei , Troque o    if AnsiCompareText(mmoIPAntigo.Lines.Text, mmoShowIP.Lines.Text) = 0 then  POR    if AnsiCompareText(mmoIPAntigo.Lines.Text, mmoShowIP.Lines.Text) <> 0 then        

Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 24/1/2011 01:58:11 PM
 
Sim, com o IPAddresses ele deve mesmo fazer isso. Esse programa será usado em servidores que geralmente possuem mais de um aplaca/IP's.


Citação:

Citação:
O que ele faz na primeira vez é gravar o que exibe no memo de cima no arquivo INI.
Quando abrir novamente, o memo abaixo exibe o que está no INI, se o IP for alterado, então não serão mais iguais. Aí nessa situação deveria enviar um e-mail, se o IP não for alterado então os dois memos serão iguais. Valeu pelo elogio, com certeza os amigos aqui do DevMedia me ensinaram isso também...rsrs
Configure tudo e tente novamente, após a gravação do INI deve ocorrer normal, salvo o problema de comparar para enviar ou não o e-mail.


Certo mas o fato do sistema me dar o ip de minha máquina e do roteador no mesmo memo antigo, acontece isso com vc?



Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 24/1/2011 02:03:42 PM
 
CommaText salvou o projeto.

Demais Marco...valeu mesmo...

MARCO ANTONIO SALLES
 
 

 


País: Brasil
Estado: MG
Cidade: Muriae
Mensagens: 1702
 Postado em: 24/1/2011 02:12:48 PM
 

Citação:
CommaText salvou o projeto.

Demais Marco...valeu mesmo...
Eentão . Altere para concluido. Nos extrapolamos o limite de postagem rsrsrsrs

web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03