![]() |
"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 |
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:
alles globale Variablen?
zeit,minuten,stunden,s5,soundpfad,installpfad:string; m,posi,zg1,zg2,zg3,zg4,zg5:integer;
|
Re: "DoubleA!Zeitgeber" Zeit Erinnerung
:D weil ich nicht mehr als Schul-Delphi Kenntnisse habe :-). Ich achte eher auf die Funktionalität des Programms ^^.
|
Re: "DoubleA!Zeitgeber" Zeit Erinnerung
Ich hätte da ein paar Kritikpunkte... :angel:
1.)
Delphi-Quellcode:
Die ganzen Variablen zeit,minuten,... gehören eigentlich unter den Abschnitt private der Form-Klasse.
var
Form1: TForm1; zeit,minuten,stunden,s5,soundpfad,installpfad:string; m,posi,zg1,zg2,zg3,zg4,zg5:integer; 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:
Frag' dich mal kritisch: worum geht's in dem Code?
procedure TForm1.CheckBox5Click(Sender: TObject);
var Reg:TRegistry; begin If CheckBox5.Checked=True Then Und hier der verbesserte Code:
Delphi-Quellcode:
So wird es viel klarer: es geht um die AutoStart-Funktionalität.
procedure TForm1.ChkAutoStartClick(Sender: TObject);
var Reg:TRegistry; begin If ChkAutoStart.Checked Then // beachte: Vergleich mit True ist unnötig |
Re: "DoubleA!Zeitgeber" Zeit Erinnerung
Zitat:
|
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. |
Re: "DoubleA!Zeitgeber" Zeit Erinnerung
Zitat:
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? |
Re: "DoubleA!Zeitgeber" Zeit Erinnerung
Zitat:
|
Re: "DoubleA!Zeitgeber" Zeit Erinnerung
Zitat:
Ich habe ein Setup Programmiert, damit die Sound und Save Dateien nicht in der Gegend rumfliegen ^^. |
Re: "DoubleA!Zeitgeber" Zeit Erinnerung
Was ist das eigentlich für ein unsichtbares Memo?
|
Re: "DoubleA!Zeitgeber" Zeit Erinnerung
Ich habe es mir ehrlich gesagt nicht ganz duchgesehen, aber hier ein paar Anmerkungen:
Delphi-Quellcode:
Besser:
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;
Delphi-Quellcode:
Und:
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;
Delphi-Quellcode:
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:
var Reg: TRegistry;
[...] installpfad:=ReadString('Pfad'); [...] soundpfad:=installpfad +'\Sounds\Töne\zap_dela-dog-7593_hifi.wav';
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:
a) Niemals auf True oder False vergleichen sondern einfach
If CheckBox5.Checked=True Then s5:='True' Else s5:='False';
[delphi]if CheckBox.Checked then .../delphi] b) das ganze kannst du auch so lösen:
Code:
---
s5 := BoolToStr(CheckBox5.Checked, True);
Code:
Vorsicht beim speichern im Programmverzeichnis. Du hast nicht immer dort Schreibrechte. Lieber unter Anwendungsdaten speichern
Memo1.Lines.SaveToFile(installpfad +'\Save\Settings.ini');
-- ... :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. |
Re: "DoubleA!Zeitgeber" Zeit Erinnerung
Zitat:
Zitat:
--------------------- 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... |
Re: "DoubleA!Zeitgeber" Zeit Erinnerung
Zitat:
Zitat:
|
Re: "DoubleA!Zeitgeber" Zeit Erinnerung
Zitat:
|
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!
|
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 16:21 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