Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Delphi Sekunden, Minuten, Stunden Rechner (https://www.delphipraxis.net/203660-sekunden-minuten-stunden-rechner.html)

Moombas 10. Mär 2020 10:35

AW: Sekunden, Minuten, Stunden Rechner
 
Zitat:

Zitat von FG53 (Beitrag 1459364)
Daran habe ich auch gedacht Moombas allerdings wollte ich ihn auch die Freiheit geben in Minuten oder in Sekunden zu schreiben.

Kann er doch, es wird nur beim Verlassen des Feldes entsprechend umgerechnet.



Mach es wirklich im Onexit oder prüfe auf ein leeres Feld (dann nichts machen).

Wenn beim Onchange das Feld leer ist, kann er nichts umwandeln und läuft auf einen Fehler ('' <> 0).

Zitat:

ShellExecute(0, nil, 'cmd.exe', '/k shutdown -s -f -t ' + edit3.text + ' & exit', nil, SW_SHOWNORMAL);

FG53 10. Mär 2020 10:46

AW: Sekunden, Minuten, Stunden Rechner
 
Moombas danke wieder für deine schnelle Antwort. Allerdings kriege ich einen fehler bei deinem verbesserten Code.

Incompatible types: 'String' and 'PAnsiChar'

himitsu 10. Mär 2020 10:47

AW: Sekunden, Minuten, Stunden Rechner
 
mal ein kleiner Exkurs
Delphi-Quellcode:
// nur auftrennen
// es muß überall am Ende mindestens eine Ziffer drinstehen
// MaskEdit.EditMask = '09:009:009;1; '
i := StrToInt(Copy(MaskEdit.Text, 1, 2)) * 60 * 60
   + StrToInt(Copy(MaskEdit.Text, 4, 3)) * 60
   + StrToInt(Copy(MaskEdit.Text, 8, 3));

// und nun inkl. Fehl-/Leereingaben
// Felder können leer bleiben und Zahlen müssen nicht am Ende stehen (hier mit '0'+Trim)
// MaskEdit.EditMask = '##:###:###;1; '
i := StrToInt('0' + Trim(Copy(MaskEdit.Text, 1, 2))) * 60 * 60
   + StrToInt('0' + Trim(Copy(MaskEdit.Text, 4, 3))) * 60
   + StrToInt('0' + Trim(Copy(MaskEdit.Text, 8, 3)));

// und nochmal in "modern" ... k.A. warum es kein Append/Add gibtm für das '0'+
i := ('0' + MaskEdit.Text.Substring(0, 2).Trim).ToInteger * 60 * 60
   + ('0' + MaskEdit.Text.Substring(3, 3).Trim).ToInteger * 60
   + ('0' + MaskEdit.Text.Substring(7, 3).Trim).ToInteger;

// und wieder zusammen
MaskEdit.Text := Format('%2d:%3d:%3d', [i div 60 div 60, i div 60 mod 60, i mod 60]);
Delphi-Quellcode:
// und wieder zusammen, falls es Einzeledits waren, ohne vorher Copy/Substring
Edit1.Text := IntToStr(i div 60 div 60);
Edit2.Text := IntToStr(i div 60 mod 60);
Edit3.Text := IntToStr(i mod 60);

// lol
Edit1.Text := (i div 60 div 60).ToString;
Edit2.Text := (i div 60 mod 60).ToString;
Edit3.Text := (i mod 60).ToString;

Moombas 10. Mär 2020 10:50

AW: Sekunden, Minuten, Stunden Rechner
 
Müsste so gehen. Sry, hatte das mit dem Char vorhin vergessen^^

Zitat:

shellexecute(0, nil, 'cmd.exe', pchar('/k shutdown -s -f -t ' + edit3.text + ' & exit'), nil, sw_shownormal);

FG53 10. Mär 2020 10:58

AW: Sekunden, Minuten, Stunden Rechner
 
Danke Moombas :thumb:. Damit hab ich alles was ich brauchte danke an alle die mir dabei geholfen haben.

himitsu 10. Mär 2020 11:35

AW: Sekunden, Minuten, Stunden Rechner
 
Warum
Delphi-Quellcode:
cmd /K
und
Delphi-Quellcode:
exit
, anstatt dem richtigen
Delphi-Quellcode:
cmd /C
?

und die shutdown.exe kann man auch direkt aufrufen,
mit dem Vorteil, dass man auch dessen ExitCode (ErrorLevel) im Programm abfragen kann. (MSDN-Library durchsuchenCreateProcess)

FG53 10. Mär 2020 11:42

AW: Sekunden, Minuten, Stunden Rechner
 
Das ist mir gar nicht aufgefallen danke dir Himitsu werde das korigieren.

hoika 11. Mär 2020 06:59

AW: Sekunden, Minuten, Stunden Rechner
 
Hallo,
ich würde 3 RadioButtons nehmen,
die kommen vor die 3 Edits.
Und der RadioButton, der ausgewählt ist, bestimmt den Eingabe-Editor.
Die jeweils anderen beiden Editoren werden Disabled oder ReadOnly gesetzt.

Schon spart man sich eine Menge Logik.

Moombas 11. Mär 2020 07:54

AW: Sekunden, Minuten, Stunden Rechner
 
Zitat:

Zitat von hoika (Beitrag 1459439)
Hallo,
ich würde 3 RadioButtons nehmen,
die kommen vor die 3 Edits.
Und der RadioButton, der ausgewählt ist, bestimmt den Eingabe-Editor.
Die jeweils anderen beiden Editoren werden Disabled oder ReadOnly gesetzt.

Schon spart man sich eine Menge Logik.

Dann brauchst du nur ein Edit!
Der Radiobutton bestimmt wie die Zahl interpretiert werden soll (H, M, S) und im Editfeld gibt man sie ein.
Und beim Verlassen dessen wird es entsprechend umgesetzt.
Aber (von der Nutzereingabe und GUI betrachtet) es wäre für den Benutzer ein (minimaler) Mehraufwand bei der Eingabe.
Auch wenn es nur 1 Klick mehr ist, versuche ich dem Benutzer jeden Arbeitsweg so gut wie möglich zu verkürzen/vereinfachen und die GUI so schlank wie möglich zu halten (Ja, 3 Radiobuttons (als Radiobuttongroup) + 1 Editfeld sind in der Summe in der GUI (je nach Dimensionierung und Anordnung) weniger als 3 Editfelder.).
Wobei ich immer folgendes als Leitfaden nehme: Funktion > Arbeitsschritte > GUI > kurze/einfache Programmierlogik

Und ob man sich dadurch wirklich so viel Logik spart, bin ich mir gerade nicht mal sicher.
Bei deiner Variante müsstest du (ggf.) 3 unterschiedliche Funktionen schreiben, bei der eben angesprochenen Variante nur 1, halt nur mit der Prüfung der Eingabefelder.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:40 Uhr.
Seite 3 von 3     123   

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