AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

string manipulieren

Ein Thema von acordo · begonnen am 13. Feb 2005 · letzter Beitrag vom 13. Feb 2005
Antwort Antwort
acordo

Registriert seit: 22. Aug 2003
Ort: Tief im Westen...
10 Beiträge
 
Delphi 4 Professional
 
#1

string manipulieren

  Alt 13. Feb 2005, 11:10
Hallo

Ich möchte bei einer IP-Adresse die als String vorliegt den letzten Zahlenblock manipulieren, also aus z.B. 172.168.45.30 eine 172.168.45.33 machen. Diese Wertänderung soll über eine byte-Variable erfolgen. (Im oberen Beispiel hätte die Variable den Wert 3) Ich habe mit Pos bzw. StrPos gebastelt, aber leider kein vernünftiges Ergebnis erhalten.

gruss, harald
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: string manipulieren

  Alt 13. Feb 2005, 11:13
Hai acordo,

mal als Lösungsansatz: Du musst die Postition des dritten Punktes in dem String ermitteln. Dann alle Zeichen dahinter abschneiden oder alle zeichen von Position 1 bis zum dritten Punkt heraus kopieren. An diesen String musst Du dann nur noch deine Änderung anhängen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
acordo

Registriert seit: 22. Aug 2003
Ort: Tief im Westen...
10 Beiträge
 
Delphi 4 Professional
 
#3

Re: string manipulieren

  Alt 13. Feb 2005, 11:22
Hallo Sharky

Dein Lösungsansatz ist logisch klar !
Hier mein Versuch
Delphi-Quellcode:
var s:array[0..3]of byte
    ip:string;

for i:=0 to 3 do begin
  a[i]:=StrToInt(copy(ip),0,pos('.',ip)-1));
  delete(ip,0,pos('.',ip));
end;

ip:=StrToInt(a[0])+'.'+StrToInt(a[1])+'.'+StrToInt(a[2])'.'+StrToInt(a[3]+WERT);
Als Ergebnis bekomme ich bei IP=172.192.45.30 : 172.172.172.172
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: string manipulieren

  Alt 13. Feb 2005, 11:25
Hai acordo,

dein "Fehler" liegt darin das die Funktion Delphi-Referenz durchsuchenPos immer wieder am Anfang des Strings anfängt zu suchen und darum immer wieder den ersten Punkt findet. Schaue Dir mal die Funktion Delphi-Referenz durchsuchenPosEx an. Mit dieser solltest Du es dann schaffen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
acordo

Registriert seit: 22. Aug 2003
Ort: Tief im Westen...
10 Beiträge
 
Delphi 4 Professional
 
#5

Re: string manipulieren

  Alt 13. Feb 2005, 11:31
PosEx gibt es leider bei Delphi4 noch nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: string manipulieren

  Alt 13. Feb 2005, 11:36
Hier mal eine quick an dirty Lösung:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  oldIP : String;
  newIP : String;
  ndx : Integer;
  punkte : Integer;
begin
  oldIP := '192.168.1.23';
  punkte := 0;
  for ndx := 1 to Length(oldIP) do
  begin
    if (oldIP[ndx] = '.') then
    begin
      INC (punkte);
    end;
    if (punkte = 3) then
    begin
      newIP := Copy (oldIP,1,ndx);
      break;
    end;
  end;
  Label1.Caption := newIP; / Die alte IP ohne das letzte Oktet.
end;
Uff... was für ein Lösung
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  oldIP : String;
  newIP : String;
  ndx : Integer;
begin
  oldIP := '192.168.1.23';
  punkte := 0;
  for ndx := Length(oldIP) downto 1 do
  begin
    if (oldIP[ndx] = '.') then
    begin
      newIP := Copy (oldIP,1,ndx);
      break;
    end;
  end;
  Label1.Caption := newIP;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
13. Feb 2005, 11:40
Dieses Thema wurde von "Sharky" von "Sonstige Fragen zu Delphi" nach "Object-Pascal / Delphi-Language" verschoben.
Ist in dieser Sparte sicher besser aufgehoben
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#8

Re: string manipulieren

  Alt 13. Feb 2005, 11:53
Hallo acordo,
und noch ein Lösungsansatz. Siehe anhängende Demo.

bye
Claus
Angehängte Dateien
Dateityp: zip demo_849.zip (222,9 KB, 9x aufgerufen)
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
acordo

Registriert seit: 22. Aug 2003
Ort: Tief im Westen...
10 Beiträge
 
Delphi 4 Professional
 
#9

Re: string manipulieren

  Alt 13. Feb 2005, 12:07
DANKE !!

Hier mein funktionierendes Endresultat :

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  oldIP : String;
  newIP : String;
  IPLast : String
  ndx : Integer;
begin
  oldIP := '192.168.1.23';
  for ndx := Length(oldIP) downto 1 do
    if (oldIP[ndx] = '.') then
    begin
      newIP := Copy (oldIP,1,ndx);
      IPLast:= Copy(oldIP,ndx+1,Length(oldIP)-ndx);
      break;
    end;
  Label1.Caption := newIP+(IntToStr(StrToInt(IPLast)+WERT));
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz