![]() |
Timerproblem (Splitfile)
Guten Abend, die Herren und Damen.
Ich habe ein Kleines Problem. Undzwar habe ich mir eine Art "Installer" geschrieben. Mit Interface und allem .. So.. wenn der User alle Eingaben gemacht hat, wird ein Button mit der Aufschrft Installieren sichtbar. Folgnder Code steht drin:
Delphi-Quellcode:
Timer 2 wird gestartet.
JvPageControl1.ActivePage := TabSheet5; // Zum Tabsheet gehen, wo die ProgressBar's sind
BtnBack.Visible := False; // Zurückbutton deaktivieren BtnForward.Visible := False; // Vorwertsbutton ebensfalls Timer2.Enabled := True; Folgendes steht drin:
Delphi-Quellcode:
** Hier ist der Fehler.
// DIe Progressbars werden "einfach so erhöht".. nocherst. Das ändere ich bald
Label4.Caption := 'Aktuelle Datei: Test.exe'; JvXPProgressBar1.Position := JvXPProgressBar1.Position + 5; InstallStatusGesamt := JvXPProgressBar2.Position; Label25.Caption := Format('Verarbeitung Gesamt: %d%%', [InstallStatusGesamt]); JvXPProgressBar2.Position := JvXPProgressBar2.Position + 4; if JvXPProgressBar1.Position = 100 then begin Timer2.Interval := 3500; // habs hier manuell nur auf 3500 gesetzt weil sonst bekomme ich // hunderte Fehlerfenster im Millisekundenabstand Split(ExePfad+'Project1.exe', InstallVerz+'\Test.exe'); // Test aus Project1.exe extrahieren Timer2.Enabled := False; // dann timer AUSMACHEN, was aber NICHT passiert! ** JvXPProgressBar1.Position := 0; Timer3.Enabled := True; end; Die Splitroutine wird alle 3500ms wieder aufgerufen. Der Timer wird also komischerweise nicht deaktiviert? Timer 3 (nächste Datei) wird auch nicht aktiviert.. Was kann das sein? |
Re: Timerproblem (Splitfile)
probiers mla mit:
Delphi-Quellcode:
mfg
if JvXPProgressBar1.Position => 100 then
begin Timer2.Interval := 3500; // habs hier manuell nur auf 3500 gesetzt weil sonst bekomme ich // hunderte Fehlerfenster im Millisekundenabstand Split(ExePfad+'Project1.exe', InstallVerz+'\Test.exe'); // Test aus Project1.exe extrahieren Timer2.Enabled := False; // dann timer AUSMACHEN, was aber NICHT passiert! ** JvXPProgressBar1.Position := 0; Timer3.Enabled := True; end; |
Re: Timerproblem (Splitfile)
Öhm.. du meinst sicher
Delphi-Quellcode:
nicht
if JvXPProgressBar1.Position <= 100 then
Delphi-Quellcode:
oder?
if JvXPProgressBar1.Position => 100 then
Klappt leider auch nicht. Ich hab es mal so versuch:
Delphi-Quellcode:
Das geht soweit. Nur bekomme ich die Meldung, dass in diesr Zeile (JvXPProgressBar1.Position := 0;)
if JvXPProgressBar1.Position >= 100 then
begin Timer2.Interval := 3500; // habs hier manuell nur auf 3500 gesetzt weil sonst bekomme ich // hunderte Fehlerfenster im Millisekundenabstand Split(ExePfad+'Project1.exe', InstallVerz+'\Test.exe'); // Test aus Project1.exe extrahieren JvXPProgressBar1.Position := 0; Timer3.Enabled := True; Timer2.Enabled := False; // dann timer AUSMACHEN, was aber NICHT passiert! ** end else begin // nix end; "" kein gültiger Integerwert wäre. |
Re: Timerproblem (Splitfile)
jetzt erstmal ne frage, dieses hier:
Delphi-Quellcode:
if JvXPProgressBar1.Position <= 100 then
begin Timer2.Interval := 3500; // habs hier manuell nur auf 3500 gesetzt weil sonst bekomme ich // hunderte Fehlerfenster im Millisekundenabstand Split(ExePfad+'Project1.exe', InstallVerz+'\Test.exe'); // Test aus Project1.exe extrahieren Timer2.Enabled := False; // dann timer AUSMACHEN, was aber NICHT passiert! ** JvXPProgressBar1.Position := 0; Timer3.Enabled := True; end; wann soll das aufgerufen werden??? nach den 100 oder vor den 100??? |
Re: Timerproblem (Splitfile)
Kurze Frage, kurze Antwort: Wenn 100 erreicht ist oder die ProgressBar über 100 ist.
Dass "" kein gültiger Integerwerden ist, sagt er sogar wenn ich die entsprechende zeile herausnehme? |
Re: Timerproblem (Splitfile)
Zitat:
Delphi-Quellcode:
!!!
JvXPProgressBar1.Position => 100 then
|
Re: Timerproblem (Splitfile)
"=>"
Das gibt es so Meiner Meinung nach nicht. Der Compiler meckert auch :| Hier nochmal alles, so wie ich es momentan probiere:
Delphi-Quellcode:
Ich verstehe das einfach nicht. Normal MÜSSTE (!!!) doch der Timer3 angehen, und Timer2 aus?
procedure TForm1.Timer2Timer(Sender: TObject);
begin if JvXPProgressBar1.Position >= 100 then begin Timer2.Interval := 3500; // habs hier manuell nur auf 3500 gesetzt weil sonst bekomme ich hunderte Fehlerfenster im Millisekundenabstand Split(ExePfad+'Project1.exe', InstallVerz+'\Test.exe'); // Test aus Project1.exe extrahieren JvXPProgressBar1.Position := 0; Timer3.Enabled := True; Timer2.Enabled := False; // dann timer AUSMACHEN, was aber NICHT passiert! ** end else begin Label4.Caption := 'Aktuelle Datei: Test.exe'; JvXPProgressBar1.Position := JvXPProgressBar1.Position + 5; InstallStatusGesamt := JvXPProgressBar2.Position; Label25.Caption := Format('Verarbeitung Gesamt: %d%%', [InstallStatusGesamt]); JvXPProgressBar2.Position := JvXPProgressBar2.Position + 4; end; end; |
Re: Timerproblem (Splitfile)
eigentlich muss es das geben aber egal, gibts ne einfache lösung für:
Delphi-Quellcode:
if JvXPProgressBar1.Position > 99 then
|
Re: Timerproblem (Splitfile)
die lösung ist so einfach, dass der fehler noch immer kommt :D
[b]Wo der Fehler herkommt: ich habe herausgefunden, dass wenn ich
Delphi-Quellcode:
Rausnehme, alles funktioniert. Aber das ist ja nicht Zweck, dass ich das wichtigste Überhaupt herausnehme.
Split(ExePfad+'Project1.exe', InstallVerz+'\Test.exe'); // Test aus Project1.exe extrahieren
|
Re: Timerproblem (Splitfile)
ok also liegt es gar nicht an der funktion, sonder an den sachen irgendwo die du drinne aufrufst...
was genau ist denn überhaupt der fehler?? und was ist split für ne funktion und woher hast du die??? |
Re: Timerproblem (Splitfile)
Delphi-Quellcode:
hallo, hab es mir zwar nicht genau angeschaut, aber du machst mehrere anfängerfehler... a) man disabled den timer, wenn man in eine ereignisbehandlungsroutine eintritt... b) man verändert nicht die eigentschaften des timers, so lange er aktiv ist... und noch 'ne frage, was willste mit den anderen timer anstellen??? änder mal deinen kode wie folgt..
procedure TForm1.Timer2Timer(Sender: TObject);
begin time2.enabled := false; if JvXPProgressBar1.Position >= 100 then begin //Timer2.Interval := 3500; // habs hier manuell nur auf 3500 gesetzt weil sonst bekomme ich hunderte Fehlerfenster im Millisekundenabstand Split(ExePfad+'Project1.exe', InstallVerz+'\Test.exe'); // Test aus Project1.exe extrahieren JvXPProgressBar1.Position := 0; //Timer3.Enabled := True; //was willste denn mit dem ...? //Timer2.Enabled := False; // dann timer AUSMACHEN, was aber NICHT passiert! ** end else begin Label4.Caption := 'Aktuelle Datei: Test.exe'; JvXPProgressBar1.Position := JvXPProgressBar1.Position + 5; InstallStatusGesamt := JvXPProgressBar2.Position; Label25.Caption := Format('Verarbeitung Gesamt: %d%%', [InstallStatusGesamt]); JvXPProgressBar2.Position := JvXPProgressBar2.Position + 4; end; timer2.enabled := true; //und wieder einschalten //das intervall hats du ja schon vorher gesetzt, das brauchte doch nicht wieder setzen... end; bei dieser routine, solltest du wirklich nur den fortschritt anzeigen und nicht die arbeit machen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz