AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi IP-Adressen höchzählen
Thema durchsuchen
Ansicht
Themen-Optionen

IP-Adressen höchzählen

Ein Thema von josef · begonnen am 31. Jul 2003 · letzter Beitrag vom 1. Aug 2003
Antwort Antwort
Seite 1 von 2  1 2      
josef

Registriert seit: 31. Jul 2003
56 Beiträge
 
Delphi 2005 Personal
 
#1

IP-Adressen höchzählen

  Alt 31. Jul 2003, 20:29
Wie mache ich es am besten das mir alle IP-Adressen zwischen zwei gegebenen in einer Schleife zur ferfügung stehen?
Ich will damit teile von Netzen Pingen.
Wenn ich also z.b. 11.11.10.254 bis 11.11.11.3 habe soll er mir
11.11.10.254
11.11.10.255
11.11.11.1
11.11.11.2
11.11.11.3
ausgeben, aber natürlich soll das (theoretisch) auch von 11.0.0.0 bis 12.0.0.0 gehen.
  Mit Zitat antworten Zitat
magicshadow

Registriert seit: 28. Apr 2003
85 Beiträge
 
#2

Re: IP-Adressen höchzählen

  Alt 31. Jul 2003, 21:01
Nimm dir einfach ne Caridnal Value, die du hochzählst, dann gilt:
var IP:Cardinal;

Hibyte(Hiword(IP))=Die erste stelle
Lobyte(Hiword(IP))=2. Stelle
HIbyte(loword(IP))=3. Stelle
lobyte(loword(IP))=4. Stelle

gezählt von links nach rechts!

Hoffe du kannst damit was anfangen!
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#3

Re: IP-Adressen höchzählen

  Alt 31. Jul 2003, 21:26
Angenommen du hast die Adresse als String, dann nimmst du

inet_addr() um sie in einen ULONG (DWORD) umzuwandeln. Ist der Rueckgabewert = $FFFFFFFF = DWORD(-1) dann ist ein Fehler bei der Umwandlung aufgetreten.

Du hast damit die Adresse in Network Byte Order. Um sie in Host Byte Order zu konvertieren, uebergibst du das Ergebnis an ntohl().

Danach kannst du alle Adressen simpel durchgehen (zB FOR). Um sie in Network Byte Order zu konvertieren nimmst du htonl() und um sie in einen String zu konvertieren nimmst du inet_ntoa() ... als Parameter kannst du das ULONG einfach casten! Der Parameter muss im Network Byte Order erfolgen!
  Mit Zitat antworten Zitat
josef

Registriert seit: 31. Jul 2003
56 Beiträge
 
Delphi 2005 Personal
 
#4

Re: IP-Adressen höchzählen

  Alt 31. Jul 2003, 21:54
Danke!
Wie mach ich am Besten ein "DAU-Sicheres" IP eingbefeld?
Also so wie maskEdit mit 999.999.999.999 nur das es nur bis 255 geht?
Es ginge mit 4 Edit nebeneinander und bei änderung prüfen ob der Wert höher als 255 ist, aber ich hätte das gerne mit einem Feld wo der Textcursor weiterspringt!
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: IP-Adressen höchzählen

  Alt 31. Jul 2003, 21:58
Ab Win98 gibts sowas als WindowsControl. Wenn dus ohne VCL erzeugen willst, dann such mal im PDSK nach SysIPAddress32, falls nicht, such mal bei Torry nach einer solchen komponente. Da gibts sicher was.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#6

Re: IP-Adressen höchzählen

  Alt 31. Jul 2003, 21:59
Das waere eine Idee. MS hat es beim IP Control auch nicht anders geloest. Du kannst dann aber maximal die Eingabe danach checken .. oder wie willst du einen sinnvollen Livecheck einbauen? Wenn der User mit 3 beginnt und dann ne 1, ist noch alles okay. Kommt dann eine 8, darf deine Kompo aber nicht gleich Alarm schlagen. Stattdessen muss sie auch eine Korrektur mit Backspace erlauben. Ich nehme ein einfaches EDIT. Das ist schoen flexibel und ermoeglicht mit o.g. Funktionen sehr schoen eine Ueberpruefung der IP.

Und dabei kann der Benutzer die Adresse dezimal, oktal, hexadezimal oder gemischt eingeben. Warum das Rad neu erfinden?
  Mit Zitat antworten Zitat
josef

Registriert seit: 31. Jul 2003
56 Beiträge
 
Delphi 2005 Personal
 
#7

Re: IP-Adressen höchzählen

  Alt 31. Jul 2003, 22:06
Ok.
Noch ein paar kleine Fragen:
Wie muss ich dann die vier Werte kombinieren zum an inet_addr() übergeben?
Wie sollte ich den Check am besten benutzen?
Ich würde, wenn der wert größer als 255 ist den String nach der zweiten Zahl aufspalten und als wert setzen.
So als würde die zahl mit Backspace gelöscht.
Abfragen beim Buttonclicken mag ich nicht.
Wirkt IMHO Unprofessionell.
Und dann werd ich ein Mask Edit nehmen müssen, oder? Kein edit?
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#8

Re: IP-Adressen höchzählen

  Alt 31. Jul 2003, 22:08
Kombinieren wie ueblich. Schema xxx.yyy.zzz.aaa
  Mit Zitat antworten Zitat
josef

Registriert seit: 31. Jul 2003
56 Beiträge
 
Delphi 2005 Personal
 
#9

Re: IP-Adressen höchzählen

  Alt 31. Jul 2003, 23:02
Noch eine Frage.
Ich nehm jetzt diesen Code
Delphi-Quellcode:
if (ipstart1.Text > '255') then
begin
mystring := ipstart1.Text;
Delete(mystring,3,1);
ipstart1.text := mystring;
end
Wenn ich nun einen wert größer 255 eingebe wird das Letzte zeichen gelöscht!
Allerdings ist der Cursor dann auf dem ERSTEN Zeichen.
Wie setze ich den auf das dritte?
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#10

Re: IP-Adressen höchzählen

  Alt 31. Jul 2003, 23:11
SendMessage(editx.Handle, EM_SETSEL, 2, 2) sollte gehen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:05 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