Entwickler-Ecke
Windows API - Selbstschließende Message....
ProDelUse - Sa 11.10.03 14:02
Titel: Selbstschließende Message....
Hi leutz,
bin grad an nem Prog, was mehrere Befehle auf unterschiedlichen Routern mithilfe der Telnet - IndyKomponente ausführt und den Rückgabewert dann in ein Textfile speichert...
So und nun hab ich folgendes Problem:
Ich brauch einen Messagedlg oder irgendeine messagebox, die alle prozesse anhält eine Pause von ca. 1 Sekunde oder länger macht und das Prog dann weiterlaufen lässt!
Also praktisch:
messagedlg('IrgendeinText',mtInformation,[mbOK],0); -> das dann nach einer Sekunde automatich schließt... , oder so!
Es muss nicht zwangsweise eine message sein, es kann auch irgendeine funktion bzw. procedure sein, die einfach das ganze Programm anhält und irgendwann fortsetzt!
Kennt sich da jemand aus?
Danke schon mal im Vorraus!
Ciaou,
ProDelUse
P.S.: Mit sleep(1000) etc. hab ich's schon probiert! funzt net! :cry:
MrSaint - So 12.10.03 12:29
wenn das alles in einer proedurew abläuft, müsste sleep eigentlich funzen.... wenn du threads nimmst, kannst du die ja pausieren und nach 1 s wieder resumen!
gab mal n bissl code *lächz* :nut:
MrSaint
ProDelUse - So 12.10.03 18:01
Andere Frage: Gibt es einen Befehl (außer sleep()) mit dem man das komplette Programm anhalten kann und nach einer gewissen Zeit fortsetzen kann?
Mein Code sieht z.Z. so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TForm1.Button2Click(Sender: TObject); var r,zahler:Integer; begin getdir(0,s);
Form3.Table1.Open;
for r:=0 to Form3.Table1.RecordCount-1 do begin
showmessage(inttostr(r+1)+'.Connection zu: '+DBEdit1.Text);
Form1.telnet.Disconnect
starten(); Memo1.Lines.Clear; Form1.telnet.CheckForGracefulDisconnect(); Form1.telnet.CheckForDisconnect(); Form3.Table1.Next; end;
Form3.Table1.Close; end; |
Funktioniert auch alles soweit ganz gut... Nur wenn ich das showmessage weglasse, dann tut er so, als würd er nur einmal durch die Schleife gehen!
Naja, der Restliche Code sieht so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55:
| procedure connect(IP,username,pass:String); var a:Integer; begin Form1.Telnet.Host := IP; Form1.Telnet.Connect;
For a:= 1 TO Length(username) DO BEGIN Form1.Telnet.SendCh(username[a]); sleep(50); end;
Form1.Telnet.SendCh(#13);
For a:= 1 TO Length(pass) DO BEGIN Form1.Telnet.SendCh(pass[a]); sleep(50); end;
Form1.Telnet.SendCh(#13);
sleep(50); end;
procedure send_befehl(befehl:String); var a:Integer; begin
For a:=0 TO Length(befehl) DO BEGIN Form1.Telnet.SendCh(befehl[a]); sleep(50); end;
Form1.Telnet.SendCh(#13); end;
procedure starten(); begin connect(Form1.DBEdit1.text,Form1.DBEdit2.Text,Form1.DBEdit3.Text); Form1.Label7.Caption:='Sitzung gestartet...'; list.LoadFromFile(s+'\Data\'+Form1.DBEdit4.text+'.cmd'); p:=0; repeat wert:=list.Strings[p]; send_befehl(wert); namen:=Form1.DBEdit5.text; inc(p); until p>list.Count-1;
sleep(wait); end; |
Ciaou,
AV
P.S.: Das Hauptproblem liegt immer noch darin das komplette Prog anzuhalten und nach einer Sek. fortzusetzen - ohne showmessage();!
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt.
MSCH - So 12.10.03 19:34
| Zitat: |
Quelltext 1: 2: 3: 4: 5:
| Form3.Table1.Open; for r:=0 to Form3.Table1.RecordCount-1 do begin Form3.Table1.Next; end; | |
Wenn du schon mit Tables in einer For-Schleife arbeitest, dann nimm doch
statt .next lieber Table.RecNo:= R oder
Delphi-Quelltext
1: 2: 3: 4:
| while not Table.eof do begin ... Table.Next; end; |
Gibts in deiner Telnet-Komponente eine Methode die aufgerufen wird, wenn Connect/disconnect? I.d.R. sind sind solche Kompos ansynchron, d.h. Sie reagieren u.U. nicht wie normale Kompos. Was ist das für eine Kompo?
grez
msch
maxk - So 12.10.03 19:50
Wenn ich dich recht verstehe:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.Button1Click(Sender: TObject); var AButton:TButton; i:integer; begin with CreateMessageDialog('Vorgang läuft...',mtWarning,[mbAbort]) do try Self.Enabled:=False; for i:=0 to ComponentCount-1 do begin if (Components[i] is TButton) then AButton:=(Components[i] as TButton); end; AButton.Enabled:=False; Show; Sleep(1000); finally Self.Enabled:=True; Self.SetFocus; Free; end; end; |
Nicht getestet
MrSaint - So 12.10.03 20:35
Quelltext
1: 2: 3:
| Form1.telnet.Disconnect
starten(); //Connected mit dem Router und sendet Befehle... |
schon mal überlegt, dass der noch gar nich disconnected is und dann schon wieder connecten will? wird möglich durch threads und wenn das die Indy-Kompos sind, arbeiten die (galub ich zumindest) mit Threads!
also versuch doch mal n
Quelltext
1:
| repeat until not Form1.telnet.connected; |
zwischen die beiden Befehle reinzuhauen (bei den Indy Kompos). is nich die beste Lösung, aber um erstmal rauszufinden, ob das der Fehler is, müsste das genügen!
MrSaint
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!