Lazarus - Deletar String de um IP
Bom dia,
como faço pra deletar o final de um ip
192.168.2.250 - deve ficar 192.168.2
192.18.13.50 - deve ficar 192.18.13
O ip é dinâmico então não posso dizer delete -5 ou copy +3
Eu não sei qual o formato do ip, mas independente de como seja
o final com o último ponto deve ser deletado.
Como fazer?
como faço pra deletar o final de um ip
192.168.2.250 - deve ficar 192.168.2
192.18.13.50 - deve ficar 192.18.13
O ip é dinâmico então não posso dizer delete -5 ou copy +3
Eu não sei qual o formato do ip, mas independente de como seja
o final com o último ponto deve ser deletado.
Como fazer?
Roberto Rodrigues
Curtidas 0
Respostas
Roberto Rodrigues
06/08/2022
Consegui fazendo um pouco de código:
//---------------------------------------------------------------------------------------------------------------------
{
Crie um novo projeto com os componentes:
1 Button1
1 Edit1
4 Panel ( Panel1 Panel2 Panel3 Panel4 )
{
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
var
lista, lista2, ip, ep, str : String;
k : Integer;
{$R *.lfm}
{ TForm1 }
procedure organiza_lista;
begin
lista := ip;
Insert('.',lista,pos('.',lista)+LENGTH(lista));
lista2 := lista;
lista := '';
str:='';
while LENGTH(lista2) > 0 do begin
str := Copy(lista2,1,Pos('.',lista2)-1); // número+posição+valor
Insert('.',lista,pos('.',lista)-1);
Insert(str,lista,pos('.',lista)+1);
try
Delete(lista2,1,Pos('.',lista2)-1);
if lista2 <> '' then begin Delete(lista2,1,1); end;
except
ShowMessage('Error in list2!');
end;
inc(k);
end;
Delete(lista,1,Pos('.',lista)+0); // deleta 1° '.'
end;
procedure prepara_ip;
begin
Form1.Panel1.Caption:=Form1.Edit1.Caption;
ip := Form1.Edit1.Caption;
organiza_lista;
Form1.Edit1.Caption:=lista;
ip := lista;
ep := Copy(ip, Pos ('.', ip), Length(ip));
Delete(ep,1,Pos('.',ep)+0); // deleta 1° '.'
Delete(ip, Pos ('.', ip), Length(ip));
Delete(ip,1,Pos('.',ip)+0); // deleta 1° '.'
Form1.Panel2.Caption:=ip;
Form1.Panel3.Caption:=ep;
ip:=ep;
organiza_lista;
ip:=lista;
Form1.Panel4.Caption:=ip;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
prepara_ip;
end;
end.
//---------------------------------------------------------------------------------------------------------------------
Se você sabe uma forma mais simples, por favor poste.
Obrigado.
//---------------------------------------------------------------------------------------------------------------------
{
Crie um novo projeto com os componentes:
1 Button1
1 Edit1
4 Panel ( Panel1 Panel2 Panel3 Panel4 )
{
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
var
lista, lista2, ip, ep, str : String;
k : Integer;
{$R *.lfm}
{ TForm1 }
procedure organiza_lista;
begin
lista := ip;
Insert('.',lista,pos('.',lista)+LENGTH(lista));
lista2 := lista;
lista := '';
str:='';
while LENGTH(lista2) > 0 do begin
str := Copy(lista2,1,Pos('.',lista2)-1); // número+posição+valor
Insert('.',lista,pos('.',lista)-1);
Insert(str,lista,pos('.',lista)+1);
try
Delete(lista2,1,Pos('.',lista2)-1);
if lista2 <> '' then begin Delete(lista2,1,1); end;
except
ShowMessage('Error in list2!');
end;
inc(k);
end;
Delete(lista,1,Pos('.',lista)+0); // deleta 1° '.'
end;
procedure prepara_ip;
begin
Form1.Panel1.Caption:=Form1.Edit1.Caption;
ip := Form1.Edit1.Caption;
organiza_lista;
Form1.Edit1.Caption:=lista;
ip := lista;
ep := Copy(ip, Pos ('.', ip), Length(ip));
Delete(ep,1,Pos('.',ep)+0); // deleta 1° '.'
Delete(ip, Pos ('.', ip), Length(ip));
Delete(ip,1,Pos('.',ip)+0); // deleta 1° '.'
Form1.Panel2.Caption:=ip;
Form1.Panel3.Caption:=ep;
ip:=ep;
organiza_lista;
ip:=lista;
Form1.Panel4.Caption:=ip;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
prepara_ip;
end;
end.
//---------------------------------------------------------------------------------------------------------------------
Se você sabe uma forma mais simples, por favor poste.
Obrigado.
GOSTEI 0