Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   "DoubleA!Zeitgeber" Zeit Erinnerung (https://www.delphipraxis.net/121005-doublea-zeitgeber-zeit-erinnerung.html)

Darkface 20. Sep 2008 13:59


"DoubleA!Zeitgeber" Zeit Erinnerung
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi DP'ler :-D ,

ich stelle hier einmal mein Programm, den "DoubleA!Zeitgeber" oder kurz "Zeitgeber" vor!

Idee: Da ich häufiger beim Arbeiten am PC das Zeitgefühl verliere/ die Zeit vergesse, habe ich beschlossen ein Programm zu schreiben welches mir dabei hilft, dies zu Unterbinden!


[EDIT1]:

Neue Version:
Luckie:
-Globale Variablen eliminiert
-Versuch der Codeformatierung

sx2008:
-Globale Variablen zu Private Abschnitt
-Steuerelement Namen angepasst
-Vergleich mit True abgeschafft

Flips:
-Setup (und damit Deinstaller) abgeschaft

Hador:
-OpenDialog1.Execute angepasst
-installpfad umgebaut, (+neuer Name "ordnerpfad")
-->dadurch Speichern im Programmordner, wo auch immer er liegen mag ;-)

ToDo:
-Sounds in Ressourcen Datei

Funktionen:
- Zeitansage zu jeder vollen Stunde
- Soundausgabe zu jeder Virtel, Halben, Dreivirtel Stunde (einzeln An/Ab-wählbar)!
- Autostart Ein/Austrag (Registry Eintrag)
- Standard Sounds, eigene Sounds wählbar
- SysTray, startet minimiert

Luckie 20. Sep 2008 14:11

Re: "DoubleA!Zeitgeber" Zeit Erinnerung
 
Ich habe mal über den Quellcode drüber geguckt.

Also die Codeformatierung, so fern überhaupt vorhanden, ist grausam. Und warum sind das
Delphi-Quellcode:
zeit,minuten,stunden,s5,soundpfad,installpfad:string; m,posi,zg1,zg2,zg3,zg4,zg5:integer;
alles globale Variablen?

Darkface 20. Sep 2008 14:20

Re: "DoubleA!Zeitgeber" Zeit Erinnerung
 
:D weil ich nicht mehr als Schul-Delphi Kenntnisse habe :-). Ich achte eher auf die Funktionalität des Programms ^^.

sx2008 20. Sep 2008 14:22

Re: "DoubleA!Zeitgeber" Zeit Erinnerung
 
Ich hätte da ein paar Kritikpunkte... :angel:
1.)
Delphi-Quellcode:
var
  Form1: TForm1; zeit,minuten,stunden,s5,soundpfad,installpfad:string; m,posi,zg1,zg2,zg3,zg4,zg5:integer;
Die ganzen Variablen zeit,minuten,... gehören eigentlich unter den Abschnitt private der Form-Klasse.
Globale Variablen sollte man wann immer möglich vermeinden.
Nicht, dass es irgendeinen Unterschied an der Funktionalität machen würde, aber wenn du ein Programm mit sagen wir mal 100 Formularen hast und überall liegen diese globalen Variablen rum, wirst du daran verzweifeln.
2.)
du hast die Namen deiner Steuerelement unverändert gelassen.
Hier ein Beispiel aus deinem Code:
Delphi-Quellcode:
procedure TForm1.CheckBox5Click(Sender: TObject);
var Reg:TRegistry;
begin
If CheckBox5.Checked=True Then
Frag' dich mal kritisch: worum geht's in dem Code?
Und hier der verbesserte Code:
Delphi-Quellcode:
procedure TForm1.ChkAutoStartClick(Sender: TObject);
var Reg:TRegistry;
begin
If ChkAutoStart.Checked Then // beachte: Vergleich mit True ist unnötig
So wird es viel klarer: es geht um die AutoStart-Funktionalität.

Luckie 20. Sep 2008 14:28

Re: "DoubleA!Zeitgeber" Zeit Erinnerung
 
Zitat:

Zitat von Darkface
:D weil ich nicht mehr als Schul-Delphi Kenntnisse habe :-). Ich achte eher auf die Funktionalität des Programms ^^.

Auch dann sollte man auf einen saubren Code achten. Und euer Lehrer hat euch das so bei gebracht? Globale Variablen und keine Codeformatierung?

Darkface 20. Sep 2008 14:39

Re: "DoubleA!Zeitgeber" Zeit Erinnerung
 
:D nun, natürlich hatten wir Programme beschprochen die die variablen von einer procedure zur nächsten übergeben, aber ich habe nie ein Problem mit der Lösung mit Hilfe der globalen Variablen gesehen ^^
Code Formatierung war kein bestandteil des Unterrichtes ;-). Aber wie ich bereits sagte es geht mir eigentlich um Funktionalität :-). Eure Kritikpunkte sind berechtigt, aber sie ändern am Ende doch nur etwas an der Übersichtlichkeit, nicht an der Funktion :D.

Flips 20. Sep 2008 14:42

Re: "DoubleA!Zeitgeber" Zeit Erinnerung
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Darkface
:D weil ich nicht mehr als Schul-Delphi Kenntnisse habe :-). Ich achte eher auf die Funktionalität des Programms ^^.

Auch dann sollte man auf einen saubren Code achten. Und euer Lehrer hat euch das so bei gebracht? Globale Variablen und keine Codeformatierung?

Tja, so ist das bei uns auch. OOP steht bei uns (Gymnasium Oberstufe) nicht auf dem Lehrplan, daher weiß der Lehrer auch nicht, wofür die private und public Bereiche bei TForm sind.
Mein Lehrer formatiert seinen Code zwar, allerdings seine eigene Art, aber immernoch besser als gar keine ;-)

Edit: Und wieso muss es unbedingt en Setup geben?

Luckie 20. Sep 2008 14:45

Re: "DoubleA!Zeitgeber" Zeit Erinnerung
 
Zitat:

Zitat von Flips
Edit: Und wieso muss es unbedingt en Setup geben?

Weil's cool ist und professionell aussieht. ;)

Darkface 20. Sep 2008 15:31

Re: "DoubleA!Zeitgeber" Zeit Erinnerung
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Flips
Edit: Und wieso muss es unbedingt en Setup geben?

Weil's cool ist und professionell aussieht. ;)

:stupid: Nein, das ist nicht der ausschlaggebende Grund sondern nur ein Nebeneffekt :mrgreen: ...
Ich habe ein Setup Programmiert, damit die Sound und Save Dateien nicht in der Gegend rumfliegen ^^.

Luckie 20. Sep 2008 17:59

Re: "DoubleA!Zeitgeber" Zeit Erinnerung
 
Was ist das eigentlich für ein unsichtbares Memo?

Hador 20. Sep 2008 18:25

Re: "DoubleA!Zeitgeber" Zeit Erinnerung
 
Ich habe es mir ehrlich gesagt nicht ganz duchgesehen, aber hier ein paar Anmerkungen:

Delphi-Quellcode:
OpenDialog1.Execute;
soundpfad:=OpenDialog1.FileName;
If OpenDialog1.Filename=''Then begin soundpfad:=installpfad +'\Sounds\Töne\zap_dela-dog-7593_hifi.wav'; RadioButton2.Checked:=True; end;
Besser:
Delphi-Quellcode:
if OpenDialog1.Execute then // Execute gibt True zurück, wenn erfolgreich eine Datei ausgewählt wurde
  soundpfad := OpenDialog1.FileName
else begin
  soundpfad := installpfad + '\Sounds\Töne\zap_dela-dog-7593_hifi.wav';
  RadioButton2.Checked := True;
end;
Und:
Delphi-Quellcode:
var Reg: TRegistry;
[...]
        installpfad:=ReadString('Pfad');
[...]
soundpfad:=installpfad +'\Sounds\Töne\zap_dela-dog-7593_hifi.wav';
Der Installpfad ist bei dir doch der Pfad, in dem deine Echse liegt. Warum dann das zwischenspeichern und den Umweg über die Registry? Es ist doch viel einfacher:
Delphi-Quellcode:
installpfad := ExtractFilePath(ParamStr(0));
// Anwendungsverzeichnis mit "\" auslesen. Alternativ ExtractFileDir ohne "\" am Ende
soundpfad := installpfad + 'Sounds\Töne\zap_dela-dog-7593_hifi.wav';
---
Delphi-Quellcode:
If CheckBox5.Checked=True Then s5:='True' Else s5:='False';
a) Niemals auf True oder False vergleichen sondern einfach
[delphi]if CheckBox.Checked then .../delphi]
b) das ganze kannst du auch so lösen:
Code:
s5 := BoolToStr(CheckBox5.Checked, True);
---

Code:
Memo1.Lines.SaveToFile(installpfad +'\Save\Settings.ini');
Vorsicht beim speichern im Programmverzeichnis. Du hast nicht immer dort Schreibrechte. Lieber unter Anwendungsdaten speichern

--
... :mrgreen:

EDIT: Schlechtschreibung und: Wiso nimmt der unten die Delphi-Tags nicht :gruebel:
EDIT2: Arrg, meine c-Taste klemmt :?

EDIT3:
Du könntest die voreingestellten Töne übrigends auch als Ressourcen einbinden. Dann kannst du sicher sein, dass die auh nicht jmd. versehentlich verschiebt, löscht oder sonst was damit anstellt.

Darkface 20. Sep 2008 20:12

Re: "DoubleA!Zeitgeber" Zeit Erinnerung
 
Zitat:

Zitat von Luckie
Was ist das eigentlich für ein unsichtbares Memo?

Das Memo benutze ich für das einfache einlesen und speichern der Einstellungen in die Settings.inf!


Zitat:

Zitat von Hador
Der Installpfad ist bei dir doch der Pfad, in dem deine Echse liegt. Warum dann das zwischenspeichern und den Umweg über die Registry?

Das ist nicht ganz richtig, da auf dem Desktop eine zweite exe erstellt wird. Beiden exen ist es bei meiner Variante egal von wo sie gestartet werden, die Sounds werden so immer im Installationsverzeichnis gelesen!

---------------------
Das ich nicht auf True/False überprüfen soll habe ich inzwischen aufgenommen :-).
---------------------
Danke für den Tipp, nicht in das Programmverzeichnis zu speichern.
---------------------
Müsste mir mal ansehen wie ich Sounds in Ressource speichern kann...

Luckie 20. Sep 2008 23:03

Re: "DoubleA!Zeitgeber" Zeit Erinnerung
 
Zitat:

Zitat von Darkface
Zitat:

Zitat von Luckie
Was ist das eigentlich für ein unsichtbares Memo?

Das Memo benutze ich für das einfache einlesen und speichern der Einstellungen in die Settings.inf!

Dann kannst du auch eine StringList nehmen.

Zitat:

Das ist nicht ganz richtig, da auf dem Desktop eine zweite exe erstellt wird. Beiden exen ist es bei meiner Variante egal von wo sie gestartet werden, die Sounds werden so immer im Installationsverzeichnis gelesen!
Warum erstellst du eine zweite Exe auf dem Desktop? Was hat sie dort zu suchen? Ich will dort keine Anwendungen haben.

Hador 20. Sep 2008 23:14

Re: "DoubleA!Zeitgeber" Zeit Erinnerung
 
Zitat:

Zitat von Luckie
[...]
Zitat:

Zitat von Darkface
Das ist nicht ganz richtig, da auf dem Desktop eine zweite exe erstellt wird. Beiden exen ist es bei meiner Variante egal von wo sie gestartet werden, die Sounds werden so immer im Installationsverzeichnis gelesen!

Warum erstellst du eine zweite Exe auf dem Desktop? Was hat sie dort zu suchen? Ich will dort keine Anwendungen haben.

Da stimme ich Luckie völlig zu. Erstell doch (optional) dort eine Verknüpfung mit deiner Anwendung (wenn überhaupt - Denn dein Prgm. wird doch eh automatisch gestartet).

Darkface 21. Sep 2008 09:43

Re: "DoubleA!Zeitgeber" Zeit Erinnerung
 
Ok, dann werde ich das Programm demnächst nach den hier Angesprochenen Kritikpunkten anpassen. Das Programm wird übrigens nichtautomatisch automatisch gestartet, nur auf Wunsch!

Darkface 21. Sep 2008 11:44

Re: "DoubleA!Zeitgeber" Zeit Erinnerung
 
Neue Version, siehe Edit1 erster Post.
Muss mich als nächstes um die Sounds kümmern (müssen in Ressourcen Datei). Wie ich das anstelle weis ich noch nicht, habe noch nie mit einer Ressourcen Datei gearbeitet. Falls jemand einen guten Link zu dem Thema hat, scheut euch nicht ihn zu Posten :D.

Ansonsten bin ich weiterhin offen für Anregungen/Verbesserungsvorschläge/ect. ^^.

MfG Darkface


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:16 Uhr.

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