Autor Beitrag
Bookworm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 29

Win XP SP2
Delphi 2005 PE
BeitragVerfasst: Do 30.08.07 22:30 
Nur um sicher zu gehen, dass ich keinen Mist baue:

1. Ich öffne Notepad o.ä.
2. Ich kopiere den Quelltext da rein
3. Ich speicher das als Ping.pas
4. Ich kopiere die Datein in das /lib Verzeichnis von Delphi

Alles richtig?

Gruß
Bookworm

P.S. Ich weiß, wie n00big ich aussehen muss :P
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 30.08.07 22:36 
Moin!

user profile iconBookworm hat folgendes geschrieben:
4. Ich kopiere die Datein in das /lib Verzeichnis von Delphi

Speicher die Ping.pas zunächst einfach in das Verzeichnis, in dem auch deine .dpr und die .exe liegen. Beim Compilieren wird dann auch eine Ping.dcu erzeugt, und die kannst du später dann ins /lib-Verzeichnis legen.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Bookworm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 29

Win XP SP2
Delphi 2005 PE
BeitragVerfasst: Fr 31.08.07 11:58 
Danke soweit schonmal!

Und jetzt, der eigentliche Teil: Wie pinge ich damit? Soweit wie ich den Quelltext verstanden habe, ist die Funktion Execute dafür zuständig, allerdins weiß ich nicht, wie ich die aufrufen soll :oops:

Erklärung/Beispiel wäre echt nett

Gruß
Bookworm
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 31.08.07 12:20 
Moin!

ausblenden Delphi-Quelltext
1:
2:
if (Ping.Execute('www.delphi-forum.de') >= 0then
  ShowMessage('Erreichbar!');

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Bookworm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 29

Win XP SP2
Delphi 2005 PE
BeitragVerfasst: Fr 31.08.07 12:34 
Danke!
Noch ein letztes: Wie ping ich damit auf eine IP?
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 31.08.07 12:45 
Moin!

user profile iconBookworm hat folgendes geschrieben:
Danke!

Bitte. ;)

user profile iconBookworm hat folgendes geschrieben:
Noch ein letztes: Wie ping ich damit auf eine IP?

:? :| :gruebel:

Hmm, ich bekomme langsam Zweifel, ob du überhaupt weisst, was du da machst - und ob es gut ist, dir dabei zu helfen... :nixweiss:

Du hast alles zum Einsteigen, schau dir nochmal sehr ausführlich das Beispielprogramm an, da ist das erklärt. :les:

Bitte die nächste Anfrage mit einem Stück Code machen, der zeigt, was du probiert hast! :mahn:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
whitef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: Sa 27.10.07 04:03 
hahaha, ich bin anscheinend noch schwerer von begriff... ich finds cool!

ich bekomm diese dcu datei nicht hin.

-habe die pingdemo.zip runtergeladen
-die unit1.pas extrahiert
-die unit1.pas in den order verschoben, in dem auch mein programm drin is
-die unit1.pas in ping.pas unbenannt
-mein programm gestartet und in bei den uses habe ich schön ein komma eingefügt und das wörtschen "ping"



[Fataler Fehler] ping.pas(7): Das Programm oder die Unit 'ping' ruft sich selbst wieder auf



habe eigentlich schon sehr viele varianten ausprobiert um das zu umgehen... es klappt alles nichts.... kann jemand helfen?

mfg
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Sa 27.10.07 14:27 
Moin!

user profile iconwhitef hat folgendes geschrieben:
hahaha, ich bin anscheinend noch schwerer von begriff... ich finds cool!

ich bekomm diese dcu datei nicht hin.
Ich merk schon... :?

Ich habe die Ping.pas nochmal extra hochgeladen - für diejenigen, die es nicht schaffen, den Quelltext aus dem Beitrag zu kopieren und als Ping.pas zu speichern... :zwinker: :nut:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
whitef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: So 28.10.07 18:00 
joa... also im ip-bereich des internen Netzwerks funktioniert diese ping unit einwandfrei.
allerdings wenn ich eien url eingebe und diese in meinem programm als ip wiederrum einlesen lasse, sind dies ip's immer offline.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
  if ping.Execute(inet_ntoa(IP)) = 0 then
  ShowMessage('Host ist erreichbar!')
  else
  ShowMessage('Host ist Down!!!');
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 28.10.07 20:21 
Moin!

user profile iconwhitef hat folgendes geschrieben:
allerdings wenn ich eien url eingebe und diese in meinem programm als ip wiederrum einlesen lasse, sind dies ip's immer offline.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
if Ping.Execute(IP) >0 then // IP-Adressen (IP: in_addr) gehen auch direkt
  ShowMessage('Host ist erreichbar!')
else
  ShowMessage('Host ist Down!!!');
Als Ergebnis wird die RTT in Millisekunden geliefert, ein Wert < 0 ist als Fehler/Timeout definiert! :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.


Zuletzt bearbeitet von Narses am Mo 10.03.08 00:47, insgesamt 2-mal bearbeitet
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 11.01.08 00:02 
Moin!

Bin grad nochmal über das hier gestolpert:
user profile iconreddevil hat folgendes geschrieben:
wenn oft die Funktion ExecuteAsync mit einem unaufgelösten Hostname aufgerufen wird, so steigt der Speicherverbrauch des Programms an. Er scheint linear mit der Anzahl der Aufrufe zu steigen, könnte also irgendwelcher Speicher sein der nicht wieder freigegeben wird.
Wenn anstelle des Hostname die Funktion mit der entsprechenden in_addr Struktur aufgerufen wird, so tritt dieser Effekt nicht auf. Ich würde daher vermuten, dass "der Fehler" zwischen Zeile 688 und 724 liegt (konnte ihn jedoch nicht finden).

Um den oben beschriebenen Effekt festzustellen reicht es in deinem PingDemo Programm einen Host (z.B. www.heise.de) etwa 20mal in die Hostliste hinzufügt und anschließend mehrfach asynchron anzupingen. Den Speicherbedarf kann man dabei im Taskmanager beobachten.

user profile iconLuckie hat folgendes geschrieben:
es ist ein Fehler in deinem Code. Du hast wahrschenlich da irgendwo ein Speicherleck.

user profile iconreddevil hat folgendes geschrieben:
Daher könnte es vielleicht auch an irgendwelchen "nicht thread-sicheren" Windowsfunktionen liegen.

user profile iconNarses hat folgendes geschrieben:
user profile iconreddevil hat folgendes geschrieben:
An einen "Fehler" im MemoryManager will ich nicht glauben, allerdings weiss ich auch nicht woran es liegt.

Von einem Fehler redet auch niemand, da aber in der Hostname-Variante Strings auf den [...] Heap gelegt werden und die Threads nicht alle synchron dazu terminieren, wird es einfach ein "Schweizer-Käse"-Problem sein, schätze ich. Wenn du in Zeile 637 "Hostname" durch '' ersetzt, tritt der Speicher-Effekt auch nicht mehr (so) auf (in meinem 2. Test-Programm, dass nur den Call macht).

Fazit: IMHO ist da kein Speicherleck, das ist ein Thread-Heap-Problem mit den Strings (prinzipbedingt).

Deshalb habe ich mal grade eben das Demoprogramm mit MemCheck kompiliert, getestet und kann damit jetzt auch im gleichen Brustton der Überzeugung wie user profile iconLuckie behaupten:

Laut MemCheck ist die Unit fehlerfrei, es ist kein Speicherleck! :D

cu
Narses
Einloggen, um Attachments anzusehen!
_________________
There are 10 types of people - those who understand binary and those who don´t.
TKoASF_Morphix
Hält's aus hier
Beiträge: 3

Win XP, Win Vista, Win 7 Beta
Delphi 6 Pro, Delphi 7 Enterprise
BeitragVerfasst: Mo 26.01.09 13:06 
HiHo @ ALL

ich bin der neue und komm jetzt öffter :D

Ich wollte die Komponente in meine bestehende App integrieren und
bin dabei wie oben schon mehrfach geschlidert vorgegangen.

PAS-Datei ins App-Folder kopieren, als Uses hinzufügen und natürlich Procedure schreiben.

Wenn ich jetzt allerding die ganze Sache durch den Kompiler jage sagt der mir das er die ping.dcu
nicht findet...

also legt er sie leider auch nicht wie von Narses beschrieben an...

Hat einer ne Idee warum?
Oder hab ich den N00b-Zettel am rücken? :D

MfG

Morphix
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mo 26.01.09 13:19 
hallo und :welcome:

was hast du in uses reingeschrieben, wie heißt die .pas-datei bei dir und was für eine Fehlermeldung kommt denn genau?

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
TKoASF_Morphix
Hält's aus hier
Beiträge: 3

Win XP, Win Vista, Win 7 Beta
Delphi 6 Pro, Delphi 7 Enterprise
BeitragVerfasst: Mo 26.01.09 13:28 
Die PAS heißt:
U_Fping.pas

Die Use hab ich entsprechend U_Fping genannt

Fehler in U_Fping:

Fehlermeldung:
[Fataler Fehler] U_Fping.pas(7): Datei nicht gefunden: 'Ping.dcu'

Wenn ich die dann in U_Fping umbenenne kommt

Fehlermeldung:
[Fataler Fehler] U_Fping.pas(7): Das Programm oder die Unit 'U_Fping' ruft sich selbst wieder auf

Schon mal THX 4 Help
Narses Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 26.01.09 13:34 
Moin und :welcome: im Forum!

user profile iconTKoASF_Morphix hat folgendes geschrieben Zum zitierten Posting springen:
Die PAS heißt:
U_Fping.pas

Die Use hab ich entsprechend U_Fping genannt
Wenn man nicht so genau weiß, wie man Units umbenennt, dann könnte man es ja einfach erstmal mit dem Original-Namen probieren, oder? :zwinker:

Du wirst vermutlich den Anfang der Unit so gelassen haben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
// -----------------------------------------------------------------------------  
// ICMP-Echo-API-Wrapper (Ping) für Delphi V1.03 vom 15.12.2005, (C) by Narses  
// -----------------------------------------------------------------------------

unit Ping;

interface
...
Der Unit-Name muss auch als Dateiname verwendet werden, sonst klappt das nicht. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mo 26.01.09 13:35 
Folgende Anleitung:

du löscht deine jetzige Ping-Unit.
Gehst in den ersten Post.
Lädst dir dort die 'Ping.pas' runter und speicherst diese auch als Ping.pas im Programmverzeichnis.
Dann im uses 'Ping' eintragen und das wars schon.

lg elundril

//edit: mist zu spät

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
TKoASF_Morphix
Hält's aus hier
Beiträge: 3

Win XP, Win Vista, Win 7 Beta
Delphi 6 Pro, Delphi 7 Enterprise
BeitragVerfasst: Mo 26.01.09 13:44 
THX...

hab den Fehler schon gefunden...

Ich hab die einzelne PAS noch mal gezogen und mit der funzt es dann auch...

Also hab ich wohl doch den N00b-Zettel :(

Ich hoffe das bleibt nicht an mir hängen.... ;)
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mo 26.01.09 13:52 
keine angst, das forum hat das lösungsmittel für den Klebstoff mit dem der zettel befestigt ist. ;-)

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Shyran
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20


Rad Studio XE
BeitragVerfasst: Do 08.09.11 13:20 
Guten Tag liebe Gemeinde,

ich hab die Demo hier nun auch mal versucht und mich auch bemüht, dass in eigenen Code einzubetten. Aber bereits beim Demo (selber unter Delphi XE kompiliert) und beim simplen Ping auf "localhost" (Vista) bekomme ich

"localhost -> Systemfehler: WSANO_DATA"

als Fehlermeldung. Selbstredend, dass mir die Implementierung nicht so recht gelingen will.

Jemand eine spontane Idee?

LG Shyran
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 08.09.11 13:25 
Die WSA beschwert sich über fehlende Daten im Paket.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.