Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Problem mit txt Dateien (https://www.delphipraxis.net/14969-problem-mit-txt-dateien.html)

felro 19. Jan 2004 13:39


Problem mit txt Dateien
 
Hallo, ich habe hier ein kleines Problem mit Textdatein und zwar steht in den Zeilen am Anfang eine IP Adresse und dahinter ein paar Infos. Ich möchte nun aus der Textdatei nur die IP Adressen auslesen hat da wer ne Idee? CU felro

Luckie 19. Jan 2004 13:45

Re: Problem mit txt Dateien
 
Zeig mal die erste Zeile.

felro 19. Jan 2004 13:48

Re: Problem mit txt Dateien
 
Von der txt???
Wenn ja

192.168.0.20 [Rechnername] AMD Athlon(tm) Prozessor 1,00 GHz 256 MB Ram

in den nächsten Zeilen geht es dann genauso weiter

z.B.

192.168.0.50 [felro] AMD Athlon XP(tm) Prozessor 1,66 GHz 512 MB Ram

Luckie 19. Jan 2004 13:51

Re: Problem mit txt Dateien
 
Such dir mit pos das erste Leerzeichen und kopiere mit copy die IP in eine Stringvariable.

felro 19. Jan 2004 13:53

Re: Problem mit txt Dateien
 
Erstmal danke für deine Hilfe!

Aber sorry soweit bin ich in Delph noch nicht dass ich die ganzen Befehle kenne und weiss wie ich damit arbeiten muss, kannst du mir dass evtl genauer erklären? CU felro

WtF 19. Jan 2004 13:54

Re: Problem mit txt Dateien
 
spring zum ersten punkt in der zeile und prüf dann die drei zeichen davor ob es zahlen im gültigen bereich einer ip sind - wenn ja dann kannst du ja den rest auch noch einlesen. Wenn nicht soll er weitersuchen.
Du kannst das alles mit Pos und Copy lösen, das wird kein problem sein.
Mfg

//verlesen//
Wenn die zeile immer nur gleich aufgebaut ist, ist es ganz leicht - dann brauchst du nur den befehl copy - in der delphi hilfe ist der prima beschrieben - oh sorry, nat brauchst du auch noch Pos falls sich die länge der ip ändert. mach das so wie es luckie gesagt hat.

-homer- 19. Jan 2004 13:57

Re: Problem mit txt Dateien
 
hi,
was gibt denn dieser text aus??? Die ip adresse des eigenen rechners, oder die eines anderen? Wenn du die Ip adresse des eigenen Rechner suchst, dann benutze einfach folgene Funktion:

Delphi-Quellcode:
uses winsock;

function GetIpAddress: string;
var phoste: PHostEnt;
  Buffer: array [0..100] of char;
  WSAData: TWSADATA;
begin
  result:='';
  if WSAStartup($0101, WSAData) <> 0 then exit;
  GetHostName(Buffer,Sizeof(Buffer));
  phoste:=GetHostByName(buffer);
  if phoste = nil then result:='127.0.0.1'
  else result:=StrPas(inet_ntoa(PInAddr(phoste^.h_addr_list^)^));
  WSACleanup;
end;

cu -homer-

[edit=FuckRacism]Delphi-Syntax hinzugefügt. Mfg, FuckRacism[/edit]

Luckie 19. Jan 2004 14:01

Re: Problem mit txt Dateien
 
Steht alles in der Hilfe, sogar mit Beispielen.

felro 19. Jan 2004 14:01

Re: Problem mit txt Dateien
 
Die Textdatei gibt verschiedene Ips aus dem lokalen Netzwerk an

Thunderchild 19. Jan 2004 14:30

Re: Problem mit txt Dateien
 
Um herauszufinden, ob ein String eine gültige IP ist, habe ich mir folgende Funktion gebastelt:

Delphi-Quellcode:
function CheckIP(ip:string):boolean;
var ziffern:array[0..3] of integer; index,position,fcode:integer;
begin
  index:=0;
  while (ip<>'') and (index<4) do begin
    position:=pos('.',ip);                          // Teil bis zum ersten Punkt interessiert
    if position=0 then position:=length(ip)+1;      // Kein Punkt»letzte Ziffer»ganzen Reststring nehmen
    val(copy(ip,1,position-1),ziffern[index],fcode); // Teilstring in Zahl wandeln
    delete(ip,1,position);                          // und dann aus dem String löschen
    if fcode>0 then ziffern[index]:=-1;             // Fehler beim Umwandeln»Ziffer ungültig machen
    inc(index);
  end;

  for position:=index+1 to 3 do ziffern[position]:=-1// restliche Ziffern auffüllen, wenn zu wenig Zahlen im String

// gültigen Zahlerbereich prüfen,. Ergebnis ist Funktionsrückgabewert
  checkIP:=(ziffern[0] in [0..255]) and (ziffern[1] in [0..255]) and
           (ziffern[2] in [0..255]) and (ziffern[3] in [1..253])
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 Uhr.
Seite 1 von 3  1 23      

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