Foro | | | | - Page 1 - |
| Penguin Tux | Ciao,
ich möchte mich ersteinmal vorstellen. Mein Name ist Tony, ich bin 15 Jahre alt und besuche eine Realschule in Chemnitz. Da ich jetzt Sommerferien habe und ich nichts weiter zu tun habe, habe ich mir vorgenommen ein kleines Netzwerkanalysetool zu schreiben. Auf der suche nach einer einfachen Programmiersprache bin ich auf XProfan gestoßen.
Ich habe alles nötige gedownloaded und installiert, anschließen habe ich nach einem Pingcode gesucht und habe diesen:
declare pingstring$,ping$,ping%
********************************************************************
Proc Ping
Parameters nic$,pingdatei1$,pingdatei2$
let pingstring$="PING.EXE",nic$,">",pingdatei1$
Assign #6,pingdatei2$
Rewrite #6
Print #6,pingstring$
Close #6
WinExecwait(pingdatei2$,0)
Assign #5,pingdatei2$
Erase #5
ASSIGN #3,pingdatei1$
RESET #3
Ping%=0
WHILENOT EOF(#3)
input #3,ping$
ping$=mid$(ping$,1,11)
case equ$(ping$,"Antwort von"):Ping%=1
WEND
CLOSE #3
Assign #1,pingdatei1$
Erase #1
EndProc
********************************************************************
Beschreibung:
Es gibt zwar schon eine schnelle und schöne Onlineabfrage über API,
aber leider gibt die Funktion nur 1 per Online zurück, wenn
man über ein Standart DFÜ eingewählt ist.
Diese Prozedur ist halt nur etwas langsamer aber man kann sogar DSL
(also - keine DFÜ-Verbindung) oder das alte T-Online u.s.w abfragen!!
alles mit einem Stern umrandete ist wichtig per die Abfrage
Rolf Koch - Rokosoftware - Koblenz 2002
BEISPIEL
WINDOWSTYLE 31
Window 200,200-300,80
Windowtitle "Onlinstatus-Prüfung ohne Api"
TextColor RGB(0,0,255),-1
UseFont "TIMES NEW ROMAN",20,10,0,0,0
DRAWTEXT 40,10,"..moment ermittele!"
HIER JETZT DER AUFRUF DER PROZEDUR:********************
PING ADRESSE,ERGEBNISDATEI,BATCHDATEI
Parameter
1.) Webadresse - eine immer vorhandene wie www.nic.de
2.) Dateiname, in welche Pingergebnis geschrieben wird - wird wieder gelöscht!
3.) Dateiname, um Ping korrekt aufzurufen. - wird wieder gelöscht!
********************************************************
TextColor RGB(255,255,255),RGB(255,255,255)
DRAWTEXT 40,10," "
UseFont "TIMES NEW ROMAN",25,20,1,0,0
TextColor RGB(0,0,255),-1
Ping "192.168.0.7","PINGTEST.TXT","PING.BAT"
if equ(ping%,1)
DRAWTEXT 25,10,"Erreichbar"
else
DRAWTEXT 25,10,"Nicht erreichbar"
endif
waitinput
Diesen Code habe ich mir nach meinen Bedürfnissen zurechtgeschnitten und er sieht wie folgt aus. Dazu müsste ich die von mir ausgedachte Funktionsweise erklären.
Es ist geplant, dass ich ein Tool schreibe, welches possibile einfach eine erste Aiuto per Schüler und Lehrer bietet. Bemerkt ein User das er keinen Internetzugang hat, führt er das Tool aus, welches der Reihe nach erst den Server anpingt, dann einen anderen Client im Netzwerk und dann noch einen Rechner von außerhalb (z.B. Google). Wenn es bei einer der Schritte keine Rückmeldung gibt, soll eine Meldung mit Tips zur Behebung auf dem Bildschrim erscheinen.
Nun zum Code:
declare pingstring$,ping$,ping%
Proc Ping
Parameters nic$,pingdatei1$,pingdatei2$
let pingstring$="PING.EXE",nic$,">",pingdatei1$
Assign #6,pingdatei2$
Rewrite #6
Print #6,pingstring$
Close #6
WinExecwait(pingdatei2$,0)
Assign #5,pingdatei2$
Erase #5
ASSIGN #3,pingdatei1$
RESET #3
Ping%=0
WHILENOT EOF(#3)
input #3,ping$
ping$=mid$(ping$,1,11)
case equ$(ping$,"Antwort von"):Ping%=1
WEND
CLOSE #3
Assign #1,pingdatei1$
Erase #1
EndProc
WINDOWSTYLE 31
Window 200,200-500,80
Windowtitle "Onlinstatus-Prüfung ohne Api"
TextColor RGB(0,0,255),-1
UseFont "TIMES NEW ROMAN",20,10,0,0,0
DRAWTEXT 40,10,"..moment ermittele!"
TextColor RGB(255,255,255),RGB(255,255,255)
DRAWTEXT 40,10," "
UseFont "CANDARA",25,20,1,0,0
Ping "127.0.0.1","PINGTEST.TXT","PING.BAT"
if equ(ping%,1)
TextColor RGB(0,255,0),-1
DRAWTEXT 25,10,"Server Erreichbar"
else
TextColor RGB(255,0,0),-1
DRAWTEXT 25,10,"Server Nicht erreichbar"
endif
Ping "192.168.0.1","PINGTEST.TXT","PING.BAT"
if equ(ping%,1)
TextColor RGB(0,255,0),-1
DRAWTEXT 25,10,"Client Erreichbar"
else
TextColor RGB(255,0,0),-1
DRAWTEXT 25,10,"Client Nicht erreichbar"
endif
Ping "www.google.de","PINGTEST.TXT","PING.BAT"
if equ(ping%,1)
TextColor RGB(0,255,0),-1
DRAWTEXT 25,10,"Google Erreichbar"
else
TextColor RGB(255,0,0),-1
DRAWTEXT 25,10,"Google Nicht erreichbar"
endif
waitinput
Ein Problem, welches sich zur Zeit auftut, ist die Tatsache das der Fensterinhalt nicht gelöcht wird. Das è das "Server Erreichbar", "Client Erreichbar" und "Google Erreichbar" übereinander geschrieben werden, also brauche ich eine Möglichkeit den Inhalt des Fensters nach jedem Schritt zu löschen. Dabei bin auf
gestoßen. Nutze ich diese Möglichkeit vor bzw. nach "Server Erreichbar" wird "Server Erreichbar" gar nicht angezeigt.
Für eine kleine Hilfestellung wäre ich sehr dankbar.
Danke Tony |
| | | | |
| | | | - Page 5 - |
| | | Penguin Tux
Das ENDPROC fehlt in einer File, die im Ordner von ROC liegt. Und an der habe ich nichts gemacht. Also muss an etwas anderem liegen.
Das scheint Dir vlt. nur so, zeig mal den Code... (Codes kann man auch einfach nach [...] hochladen - dann brauch man hier in den Beiträgen lediglich die URL zum Code hinterlassen. ) |
| | | | |
| | Penguin Tux | Welchen Code?
Das ist der aus der besagten File:
Moment... [...] |
| | | | |
| | Jörg Sellmeyer | Hm, Du hast nichts am Code geändert, oder im ROC-Ereigniseditor eingegeben? Dann muß Rolf wohl mal ran. Das hier kann naturalmente nicht funktionieren: KompilierenMarkierenSeparieren
PROC DIALOG ---------------------------------------------------------------------------> Dialoganfang
DECLARE DLG&, DIALOGENDE%
DECLARE TEXT1&
DECLARE BUTTON1&
PROC DIALOG ---------------------------------------------------------------------------> Dialoganfang
DECLARE DLG&, DIALOGENDE%
DECLARE TEXT1&
DECLARE BUTTON1&
PROC DIALOG ---------------------------------------------------------------------------> Dialoganfang
DECLARE DLG&, DIALOGENDE%
DECLARE TEXT1&
DECLARE BUTTON1&
PROC DIALOG ---------------------------------------------------------------------------> Dialoganfang
DECLARE DLG&, DIALOGENDE%
DECLARE TEXT1&
DECLARE BUTTON1&
DLG&=CREATE("DIALOG",%HWND,"Neues Fenster",51,135,640,500)
USEFONT "MS Sans Serif",13,0,0,0,0
SETDIALOGFONT an class=s2>1
Nochmal ne Frage: Was erwartest Du Dir von dieser Prozedur? KompilierenMarkierenSeparieren Da wird nämlich genau nix passieren. |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 21.07.2008 ▲ |
| |
| | Rolf Koch | *lol* Nee so wie oben die Dialogproc aussieht, hab ich das aber nicht programmiert. Wenn es doch so ausgespuckt würde, wurde mir jahrelang keine Rückinfo gegeben und ich progge ROC doch nur per die Katz. |
| | | | |
| | Rolf Koch | Also ich hab jetzt mit Roc sogar circa den Actionwriter (Ereigniseditor) und ohne mal einen oben ähnlichen Dialog erstellt und bei mir kommt nicht solch ein Errorcode heraus. |
| | | | |
| | Dieter Zornow | @Rolf Das hatte ich auch schon, das passiert meistens wenn du viele Elemente wieder löschst, dann kann so ein Code rauskommen. Probiere auch mal eine Choicebox zu verschieben, dann ist sie weg. |
| | | Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 21.07.2008 ▲ |
| |
| | Rolf Koch | Aha, ist richtig schön, dass man sowas mal gesagt bekommt. Nachtrag: Ich erstelle erstelle erstelle zerstöre zerstöre zerstöre und alles bleibt bei mir korrekt. Shit. Auch die Choicebox schieben und schieben und alles bleibt im grünen Bereich. |
| | | | |
| | Penguin Tux | Jörg Sellmeyer
Durch das drücken von OK soll das Hilfefenster wieder geschlossen werden,. aber wenn das so nicht funktioniert, wie dann?
Ich habe den ROC-Ordner jetzt einfach mal gelöscht und ihn nocheinmal aus der ZIP herausgeholt, die File ist nun weg - mal sehen ob es jetzt was wird.
Edit: Ich kann mein Fenster nun Testen, danke. Jetzt muss ich nur noch herausfinden wie man das Fenster durch klicken von "OK" wieder schließen kann. |
| | | | |
| | | | | | | |
| | Rolf Koch | oder direkt zum Dialog passend: KompilierenMarkierenSeparieren Da der Dialog geschlossen werden soll, benötigst Du hier kein Waitinput und Co. Wie Du an der Schleife siehst KompilierenMarkierenSeparieren Solange Variable dialogende% auf 0 steht wird diese Schleife durchlaufen. Setzt Du nun Dialogende% auf 1 ist die Bedingung zum Dialog beenden gebeben und die Schleife wird verlassen.
Ergänze folgendes am Schluss, da ich davon ausgehe, dass der Dialog als Hilfefenster auf dem Hauptfenster erstellt wurde: KompilierenMarkierenSeparieren |
| | | | |
| | Penguin Tux | | | | | |
| | | @Tony: Du musst aber auch die Aiuto einmal richtig lesen! DestroyWindow(0) kann nicht funktionieren - schau richtig nach! |
| | | | |
|
AnswerTopic-Options | 24.346 Views |
ThemeninformationenDieses Thema hat 9 subscriber: |