Lazarus - Deletar String de um IP

1. Lazarus - Deletar String de um IP

Roberto Carlos Rodrigues
Ombrerico

(usa Outra)

Enviado em 07/08/2022 - 05:02h

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?


  


2. Lazarus - Deletar String de um IP

Roberto Carlos Rodrigues
Ombrerico

(usa Outra)

Enviado em 07/08/2022 - 10:52h


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.


3. Re: Lazarus - Deletar String de um IP

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 07/08/2022 - 12:30h

Boa tarde.
Vejo que é mais prático com o uso de expressão regular.
Elimine/replace o .e os números do final por ""


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts