Lazarus - Deletar String de um IP

06/08/2022

4

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?
Roberto Rodrigues

Roberto Rodrigues

Responder

Posts

07/08/2022

Roberto Rodrigues

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.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar