[Delphi] Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Newbi, 2. April 2008 .

Schlagworte:
  1. 2. April 2008
    Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    Hallo Leute ich Code aus mehr oder weniger auch schulischen Gründen ein Adressverwaltungsprogramm.

    Es gibt bei uns die Möglichkeit eigene Programme vorzustellen und dafür Bonus Punkte zu bekommen.

    Ich wollte hierbei das nützliche mit dem Praktischen verbinden und habe deshalb nach etwas gesucht, was ich unbedingt brauche, bisher noch nicht habe oder aber nicht so wie ich es gerne haben möchte. Da ich doch mittlerweile von Adressen regelrecht überschwemmt werde ( Welch ein Papierkrieg ) lag es für mich sehr nahe, dass ich ein Adressenverwaltungsprogramm brauche, also google bemüht und auch eine nicht gerade geringe Anzahl an Programmen gefunden, diese ließen sich aber meist in ein oder mehrere Gruppen einsortieren.

    1) Zu viel
    2) Zu wenig
    3) Kostenpflichtig
    4) Mit Werbung überdeckt
    5) Fehlerbelastet
    6) Zu Alt

    Kurze Erklärung:
    1 = Zu viel, ich brauche nicht einen Server oder einen Kalender und schon gar nicht ein Mailprogramm, es ging einzig und alleine um ein Adressenverwaltungsprogramm.
    2 = Zu wenig, also ich will schon mehr als nur 3 Leute oder Straße und Hausnummer eintragen.
    3 = Ich zahle kein Geld...
    4 = will aber auch nicht von Werbung erschlagen werden.
    5 = Programme die bei mehr als 10 Einträgen oder ähnlichem abstürzen sind auch nicht das Ware, da es ja immer noch Produktiv eingesetzt werden soll.
    6 = Lässt sich sehr gut mit 2 verknüpfen, da die Möglichkeit eine Mailaddresse / ICQ oder was auch immer einzugeben fehlt.


    Lange Rede kurzer Sinn.
    Ich habe bereits mit der groben Programmierung begonnen, allerdings brauche ich schon noch ein paar Ideen, Anreize, Tester, immerhin soll es für mehr als nur mich sein.

    Ich werde die Versionen hier immer online stellen, zur Zeit arbeite ich an einer Alpha Version.

    Sobald das Grobe Design ( nein nichts großartig aufwendiges, schlicht und funktionell ), und die ersten Codezeilen stehen, stelle ich hier die erste Version rein.

    Ihr könnt aber jetzt schon mal überlegen, was das Programm alles können sollte.


    Status:
    - Design (45%)
    - Code (6%)

    Version: Alpha 0.1

    Features:
    - Name, Anschrift, Telefon, Handy, Mail, Website, IM.
    - Gespeichert wird in eine Lokale Datei, es wird keine DB oder so benötigt.
    - Mehrere Instanzen startbar ( Wurde von einem user nachgefragt ).
    - Suchen von Einträgen.
    - Ändern / Löschen von Einträgen.
    - Internet Update ( Wurde von einem user nachgefragt ).
    - Sortierung der Einträge nach verschiedenen Merkmalen ( Wurde von einem user nachgefragt ).
    - Arbeiten ohne Array ( Anratung eines Users ) [ Ma schauen was sich machen lässt, aber ich denke nicht, das ich es ganz ohne schaffe ].
    - Menü Links, welche je nach Useraufruf die entsprechenden Daten in einem Frame aufruft, spart Ressourcen und schont die Übersicht.
    - Alle Einträge werden in einer Typisierten Datei gespeichert, die DB Anbindung wird zu einem Späteren Zeitpunkt nachgereicht.


    ToDo (Einträge: 19 / Fertig: 2):
    - Alle Buttens Setzen und das Design fertig stellen (80%)
    - Farbliche Aufbereitung (0%)
    - Menüübergänge fertigstellen (60%)
    - Startseite coden [DONE]
    - Nachdem Laden wird nicht das nächste Fenster angezeigt [DONE]
    - MenüSeite coden (90%)
    - Eintrag Hinzufügen erstellen (90%)
    - Eintrag Hinzufügen coden (0%)
    - Eintrag Ansehen erstellen (0%)
    - Eintrag Ansehen coden (0%)
    - Eintrag Suchen erstellen (0%)
    - Eintrag Suchen coden (0%)
    - Eintrag Ändern erstellen (0%)
    - Eintrag Ändern coden (0%)
    - Eintrag Löschen erstellen (0%)
    - Eintrag Löschen coden (0%)
    - Alle Einträge löschen erstellen (0%)
    - Alle Einträger löschen coden (0%)
    - Record coden (60%)


    Known Bugs (Gefunden:3 / Behoben: 3):
    1) - E/A Fehler beim Programmstart [SOLVED]
    2) - Programm wurde nicht geschlossen [SOLVED]
    3) - Nachdem Laden wird nicht das nächste Fenster angezeigt [SOLVED]


    Mit freundlichen Grüßen
    Newbi
     
  2. 2. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    ich könnte dir so wie ich zeit hab immer mal wieder beim coden helfen
     
  3. 2. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    Könntest du mir evt. deine ICQ Nummer zukommen lassen, habe da 1, 2 kleine Fragen die ich gerne noch klären möchte.
     
  4. 2. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    ~moved to Programmierung~

    Wenn du / ihr eine ausfuehrbare fertige Version vorweisen koennt, darfs in den Showcase.

    Mfg,

    Kolazomai
     
  5. 2. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    Selbstverständlich musst du ne Sortierfunktion einbinden, dann kannste auch ne schnellere Suchfunktion benutzen. Ich kann dir ein paar fertige Sachen aus meinem INfo-Kurs zukommen lassen, wenn du bedarf hast.
     
  6. 2. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    Würd alle Kontakte in ne Liste klatschen. Kontakte werden immer hinten angefügt; anschließend Liste per BubbleSort sortieren lassen - fertig. Kontake in ner Listbox ausgeben lassen:

    Gesamte Liste durchlaufen und aus jedem Listenelement jeweiligen Informationen auslesen bzw. ausgeben lassen (Listenelement besitzt dann Name , Vorname, Email, Handy, usw). Fertige Listen findest im Internet on Mass. Ist dir somit schonmal n dicker Haufen Arbeit abgenommen - Selbst noch Liste zu programmieren ist unsinnig!

    Noch Objektorientierter kannstes machen, indem das Listenelement wiederum n Zeiger auf ein TObject ist. TObject wird in deinem Fall TContent (ist ne neue Klasse, die du ebenfalls selber erstellen musst) sein, in der alle Infos über den jewl. Kontakt gespeichert sind



    Contents der Listenelemente einfach in ner .txt Datei abspeichern und bei Programmneustart neue Liste kreieren und solang neue Listenelemente erstellen und hinten anfügen, wie Texdatei not eof ist.


    Dadurch dass dus inner Liste reinschreibst kannst soviele Kontakte adden wie Schuppen auf deim Kopf: Arry ist statisch - kannst net verlängern, wennst mehr Schuppen als geplant besitzt.

    Ist net schwer so etwas zu schreiben...


    Tipp: Vlt erst einmal auf Code achten. Design kannst nacher immer noch erstellen!
     
  7. 2. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    Liste aktualisiert.

    @ Horschtele: Kannst du mir entsprechende Materialien zukommen lassen?

    @Fanatic: Kannst du mir ein paar Beispiele zukommen lassen ??

    Und zum Array, ich kann auch ein Dynamisches Array erzeugen, welches sic bei jedem Eintrag um 1
    erweitert.

    Alles andere wurde in die Liste eingetragen.
     
  8. 3. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    ich hoffe nicht das du vorhast wärend der laufzeit alle adressen in einem array im speicher zu halten
    das wäre ein leichter resurcen killer

    ich würde dir trotzdem zu einer datenbank raten. du musst dich nicht ums speichern kümmern, das sortieren entfällt, erweiterungen sind viel schneller zu realisieren etc.

    für java gibt es hsqldb. diese datenbank muss nicht installiert werden, bietet jedoch die geschwindigkeit von mysql und ist extrem klein. vieleicht gibt es ja so was auch für delphi.
     
  9. 3. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    Soweit mir bekannt leider nicht.

    Das speichern in MySQL oder ähnliche ist sogar ein riesen Aufwand.

    Ich hatte gas ganze bisher so überlegt.

    1) Beim Starten wird die aktuelle Anzahl ein Einträgen in die .txt Datei ausgelesen.
    2) Die Datei wird nur bei zugriffen geöffnet.
    3) Beim Suchen oder oder ändern eines Eintrags, wird nur der entsprechende Eintrag ins Array geladen.
    4) Wenn ein Eintrag geändert wurde / neu hinzukommt, wird er automatisch an der entsprechende Stelle plaziert, es werden niemals alle Datensätze neugeschrieben.

    Man kann mit dieser Weise auch mehrere Instanzen öffnen.
     
  10. 3. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    Ich würde dir ja *dringend* eine kleine Datenbank dafür empfehlen.
    Schon wegen der Sortierfunktionen wirst du dir da viel Arbeit erleichtern.

    Ich könnte dir beispielsweise SQLite empfehlen.

    - - -
    Tanya
     
  11. 3. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    Wenn ich noch ne Komplette DB und so mit einbauen, und andere dies nutzen wollen, brauchen sich auch ne DB, ich wollte das ganze aber schlich halten, eine DB sprengt meir ansicht nach den Rahmen.

    Ich gehe davonn aus, das ein Einzelner für Private Zwecke niemals mehr als 5000 Kontakte eintragen wird.
     
  12. 3. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    du möchtest also jedes mal selber 5000 kontakte sortieren und verwalten, sowie aus einer datei beim starten einlesen. du weißt sicher das das ein heiden aufwand ist

    von firefox gibt es eine kleine db, wenn die installiert ist brauchst du nur eine kleine dll und schwub die wubs ist das leben viel einfacher.
    wenn du meinst das ist zu viel aufwand, dann schau dir mal später den leistungshunger deines programms an.

    Mfg Micro86
     
  13. 3. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    Ihr habt ja alle Tolle Vorschläge, aber A) bin ich noch nen beginner und B) würden mir an vielen Stellen nen paar CodeZeilen um längen weiterhelfen.
     
  14. 3. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    Guck mal hier. Da findest du ein Tutorial, dass so ziemlich genau das macht, was du willst.

    Ich kann verstehen, wenn du dich gegen DBs weigerst, denn so eine Sache ist ganz gut zum üben und da muss man ja nicht immer vom extremfall mit 5000 adressen ausgehen. Für ein professionelles Programm solltest du aber schon DBs ins Auge fassen, wobei du dich ja trotzdem vorerst auf Dateien konzentrieren kannst.
     
  15. 3. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    Ich schaue gerade ob Firebird eine Möglichkeit währe, alles andere ist zu Groß, also MySQL und konsorten.
     
  16. 3. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    was hälst du von ner excel tabelle? Oo
     
  17. 3. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    Die kommt wohl leider am allerwenigsten in frage.
     
  18. 3. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    Dynamische Arrays wie du es dir vorstellst gibts in Delphi nicht
     
  19. 3. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    Code:
    var
     d: array of byte;
    begin
     setlength(d, length(d)+1);
     d[HIGH(d)] := 100;
    end;
    
    ... funst einwandfrei.

    wenn du keine fertige DB benutzen willst würde ichs zumindest in nem binären stream mit immer gleich großen einträgen speichern. dann brauchst du beim suchen immer nur den datei-zeiger verschieben. das ist resourcen-sparend und sehr schnell. paradox-dbs arbeiten auch so.
     
  20. 4. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    Code:
    procedure BUBBLESORT; // in diesem Beispiel wird ne Tabelle (stringgrid) sortiert
    VAR
    n,i,j:integer;
    s:string;
    begin
     with form1.StringGrid1 do
     begin
     n:=rowcount-1;
     for i:=1 to n-1 do
     begin
     for j:=0 to n-i do
     begin
     if cells[0,j]>cells[0,j+1] then
     begin
     s:=cells[0,j];
     cells[0,j]:=cells[0,j+1];
     cells[0,j+1]:=s;
     s:=cells[1,j];
     cells[1,j]:=cells[1,j+1];
     cells[1,j+1]:=s;
     s:=cells[2,j];
     cells[2,j]:=cells[2,j+1];
     cells[2,j+1]:=s;
     end;
     end; 
     end;
     end;
    
    end;
    Es ist ne einfache Prozedur, weil immer geprüft wird, ob das Element größer ist, als sein Nachfolger. Wenn ja, dann werden die Elemente + die komplette dazugehörige Zeile vertauscht.

    Das mit der Suchenporzedur muss ich erst noch raussuchen(lacher) aus mienen Unterlagen
     
  21. 7. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    hier mal meine ersten Code Ansätze der MenüSeite und der Startseite:

    ACHTUNG: Es sind noch Fehler vorhanden, diese werden grade beseitigt.

    Fehler wurden nun behoben, wer noch was Findet, einfach posten

    MenüSeite:

    Spoiler
    Code:
    unit Unit_Main;
    
    interface
    
    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, ExtCtrls, StdCtrls;
    
    type
     TAdressen=record
     ID:Integer;
     Name:String[255];
     Vorname:String[255];
     Street:String[255];
     Hausnummer:String[255];
     PLZ:Integer;
     Stadt:String[255];
     Land:String[255];
     Telefon_Mobil:Integer;
     Telefon_Privat:Integer;
     Telefon_Arbeit:Integer;
     Fax:Integer;
     Mail_1:String[255];
     Mail_2:String[255];
     www:String[255];
     ICQ:String[11];
     MSN:String[255];
     AIM:String[255];
     Yahoo:String[255];
     end;
     TFrm_Main = class(TForm)
     Panel_Menu: TPanel;
     Panel_Content: TPanel;
     Btn_Adress_Add: TButton;
     Btn_Adress_Edit: TButton;
     Btn_Close: TButton;
     Button4: TButton;
     Btn_Adress_Search: TButton;
     Btn_Adress_Delete: TButton;
     Btn_Adress_Clear: TButton;
     Btn_Adress_Show: TButton;
     Button9: TButton;
     Timer_Startseite_Done: TTimer;
     procedure FormCreate(Sender: TObject);
     procedure ShowForm_Startseite;
     procedure ShowForm_Add;
     procedure ShowForm_Edit;
     procedure ShowForm_Delete;
     procedure ShowForm_Clear;
     procedure ShowForm_Search;
     procedure ShowForm_Show;
     procedure Btn_CloseClick(Sender: TObject);
     procedure Btn_Adress_AddClick(Sender: TObject);
     procedure Btn_Adress_EditClick(Sender: TObject);
     procedure Btn_Adress_SearchClick(Sender: TObject);
     procedure Btn_Adress_DeleteClick(Sender: TObject);
     procedure Btn_Adress_ClearClick(Sender: TObject);
     procedure Timer_Startseite_DoneTimer(Sender: TObject);
     procedure Btn_Adress_ShowClick(Sender: TObject);
     private
     newForm: TForm;
     { Private-Deklarationen }
     public
     { Public-Deklarationen }
     Start_first_time:integer; // Variable die den ersten Start des Programmes speichert.
     end;
    
    var
     Frm_Main: TFrm_Main;
     DirtoExe:string; // Variable die den Pfad zur .Exe Datei enthält. ( Ordner in der die .Exe ist )
     Datei: file of TAdressen; // Variable für die SpeichernDatei
     ZeigerPosition:Integer; // Position in der SpeichernDatei
     DateiSize:Integer; // Größe der SpeichernDatei
     StartseiteReady:Integer; // Startseite hat den Ladeprozess abgeschlossen
    
    implementation
    
    uses Unit_Adress_Add, Unit_Adress_Edit, Unit_Adress_Clear, Unit_Adress_Delete, Unit_Adress_Search, Unit_Startseite, Unit_Adress_Show;
    
    {$R *.dfm}
    
    procedure TFrm_Main.FormCreate(Sender: TObject);
    begin
    // Verbindung herstellen
     AssignFile(Datei,'Adressen.txt');
    // Wurde die LadenSeite schon ausgeführt ?
     If Start_first_time = 1
     then
     begin
     // Buttens Einblenden.
     Btn_Adress_Add.Visible:=true;
     Btn_Adress_Show.Visible:=true;
     Btn_Adress_Clear.Visible:=true;
     Btn_Adress_Edit.Visible:=true;
     Btn_Adress_Delete.Visible:=true;
     Btn_Adress_Search.Visible:=true;
     Btn_Close.Visible:=true;
     end
     else
     begin
     ShowForm_Startseite;
     Unit_Startseite.Timerv:=1;
     end;
    end;
    
    procedure TFrm_Main.ShowForm_Startseite;
     begin
     newForm:= TFrm_Startseite.Create(self);
     newForm.BorderStyle := bsNone; // Rahmen entfernen
     newForm.Parent := Panel_Content; // "In diesem Panel" werden die Forms angezeigt.
     newForm.Align := alClient; // Unterordnen
     newForm.Show; // Anzeigen
     end;
    
    procedure TFrm_Main.ShowForm_Add;
     begin
     newForm:= TFrm_Adress_Add.Create(self);
     newForm.BorderStyle := bsNone;
     newForm.Parent := Panel_Content;
     newForm.Align := alClient;
     newForm.Show;
     end;
    
    procedure TFrm_Main.ShowForm_Edit;
     begin
     newForm:= TFrm_Adress_Edit.Create(self);
     newForm.BorderStyle := bsNone;
     newForm.Parent := Panel_Content;
     newForm.Align := alClient;
     newForm.Show;
     end;
    
    procedure TFrm_Main.ShowForm_Delete;
     begin
     newForm:= TFrm_Adress_Delete.Create(self);
     newForm.BorderStyle := bsNone;
     newForm.Parent := Panel_Content;
     newForm.Align := alClient;
     newForm.Show;
     end;
    
    procedure TFrm_Main.ShowForm_Clear;
     begin
     newForm:= TFrm_Adress_Clear.Create(self);
     newForm.BorderStyle := bsNone;
     newForm.Parent := Panel_Content;
     newForm.Align := alClient;
     newForm.Show;
     end;
    
    procedure TFrm_Main.ShowForm_Search;
     begin
     newForm:= TFrm_Adress_Search.Create(self);
     newForm.BorderStyle := bsNone;
     newForm.Parent := Panel_Content;
     newForm.Align := alClient;
     newForm.Show;
     end;
    
    procedure TFrm_Main.ShowForm_Show;
     begin
     newForm:= TFrm_Adress_Show.Create(self);
     newForm.BorderStyle := bsNone;
     newForm.Parent := Panel_Content;
     newForm.Align := alClient;
     newForm.Show;
     end;
    
    procedure TFrm_Main.Btn_CloseClick(Sender: TObject);
    begin
    close;
    end;
    
    procedure TFrm_Main.Btn_Adress_AddClick(Sender: TObject);
    begin
    ShowForm_Add;
    end;
    
    procedure TFrm_Main.Btn_Adress_EditClick(Sender: TObject);
    begin
    ShowForm_Edit;
    end;
    
    procedure TFrm_Main.Btn_Adress_SearchClick(Sender: TObject);
    begin
    ShowForm_Search;
    end;
    
    procedure TFrm_Main.Btn_Adress_DeleteClick(Sender: TObject);
    begin
    ShowForm_Delete;
    end;
    
    procedure TFrm_Main.Btn_Adress_ClearClick(Sender: TObject);
    begin
    ShowForm_Clear;
    end;
    
    procedure TFrm_Main.Timer_Startseite_DoneTimer(Sender: TObject);
    begin
    // Ist die Startseite fertig mit Laden ??
    if StartseiteReady = 1
     then
     begin
     // Buttens Einblenden.
     Btn_Adress_Add.Visible:=true;
     Btn_Adress_Show.Visible:=true;
     Btn_Adress_Clear.Visible:=true;
     Btn_Adress_Edit.Visible:=true;
     Btn_Adress_Delete.Visible:=true;
     Btn_Adress_Search.Visible:=true;
     Btn_Close.Visible:=true;
     end ;
    end;
    
    procedure TFrm_Main.Btn_Adress_ShowClick(Sender: TObject);
    begin
    ShowForm_Search;
    end;
    
    end.
    

    Startseite:

    Spoiler
    Code:
    unit Unit_Startseite;
    
    interface
    
    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, RackCtls, StdCtrls, ExtCtrls;
    
    type
     TFrm_Startseite = class(TForm)
     LedM_Warten: TLEDMeter;
     Lbl_Anzeige_Warten: TLabel;
     Timer_Warten: TTimer;
     Timer_Go: TTimer;
     procedure FormCreate(Sender: TObject);
     procedure Timer_WartenTimer(Sender: TObject);
     procedure Timer_GoTimer(Sender: TObject);
     private
     { Private-Deklarationen }
     public
     { Public-Deklarationen }
     end;
    
    var
     Frm_Startseite: TFrm_Startseite;
    
     Durchlauf:Integer; // Variable für den Durchlauf des Ladenbalkens.
     BalkenDurchlauf:Integer; // Variable für den Durchlauf des Balkens.
     Timerv:Integer;
     DateiName:String; // Name der SpeicherDatei
    
    implementation
    
    uses Unit_Main;
    {$R *.dfm}
    
    procedure TFrm_Startseite.FormCreate(Sender: TObject);
    begin
    Lbl_Anzeige_Warten.Caption:='Bitte Warten.' +#13#10+ 'Ihre Daten werden geladen.';
    BalkenDurchlauf:=0;
    Durchlauf:=0;
    DateiName:='adressen.txt';
    end;
    
    procedure TFrm_Startseite.Timer_WartenTimer(Sender: TObject);
    var
    DateiErstellen:Integer; // Wenn die Datei nicht vorhanden ist, soll sie erstellt werden? Variable
    begin
    if Durchlauf =1
     then
     begin
     // Timer stoppen.
     Timerv:=0;
     Timer_Warten.Enabled:=false;
     // Pfad zur Exe feststellen.
     Unit_Main.DirtoExe := ExtractFilePath(ParamStr(0));
     // Ist die SpeichernDatei vorhanden ?
     if FileExists(DirtoExe+DateiName)
     then
     begin
     // Die Datei ist vorhanden!
     BalkenDurchlauf:=0;
     LedM_Warten.Position:=BalkenDurchlauf;
     LedM_Warten.Refresh;
     // Größe der SpeicherDatei abfragen
     AssignFile(Unit_Main.Datei, DateiName);
     FileMode:=0; // Datei wird nur mit LeseBerechtigung geöffnet 
     Reset(Unit_Main.Datei);
     Unit_Main.DateiSize:=FileSize(Unit_Main.Datei);
     CloseFile(Unit_Main.Datei);
     // Menü aufrufen.
     Unit_Main.StartseiteReady:=1; // Die Startseite hat den LadenProzess abgeschlosssen
     close; // Schließt die aktuelle Form
     end
     else
     begin
     // Datei ist nicht vorhanden!
     DateiErstellen:=Application.MessageBox('Es ist noch keine Datei mit Daten vorhanden.'+#13#10+'Datei jetzt erstellen?', 'Dateifehler', MB_YESNO);
     // Soll die Datei erstellt werden?
     if DateiErstellen=6
     then
     begin
     // Datei darf erstellt werden
     AssignFile(Unit_Main.Datei, DateiName);
     {$I-} // Compiler Deaktivieren
     Rewrite(Unit_Main.Datei); // Datei erstellen
     {$I+} // Compiler Aktivieren
     CloseFile(Unit_Main.Datei);
     // Wurde die Datei erfolgreich erstellt?
     if FileExists(DirtoExe+DateiName)
     then
     begin
     // Datei erfolgreich erstellt.
     Application.MessageBox('Datei wurde erfolgreich erstellt!','Datei erstellt',MB_OK);
     // Zeiger auf 0 stellen
     Unit_Main.ZeigerPosition:=0;
     // Zum Menü wechseln
     // ___ToDo___
     end
     else
     begin
     // Beim erstellen der Datei ist ein fehler aufgetreten.
     Application.MessageBox('Datei konnte nicht erstellt werden!'+#13#10+'Bitte erstellen sie die Datei manuell.','Dateifehler',MB_OK);
     // Programm beenden
     Application.Terminate;
     end;
     end
     else
     begin
     // Datei darf nicht erstellt werden
     Application.MessageBox('Um Das Programm zu starten,'+#13#10+' muss eine Datei erstellt werden / vorhanden sein','Dateifehler',MB_OK);
     // Programm Beenden
     Application.Terminate;
     end;
     end;
     end
     else
     begin
     // Ist der Balken schonmal durchgelaufen? Ist BalkenDurchlauf größer als 100?
     if BalkenDurchlauf > 100
     then
     begin
     // Der Balken ist einmal durchgelaufen
     Durchlauf:=1;
     // Die Variable BalkenDurchlauf auf 0 setzen
     BalkenDurchlauf:=0;
     end
     else
     begin
     // BalkenDurchlauf um 1 erhöhen
     BalkenDurchlauf:=Balkendurchlauf+1;
     end;
     // LED im Balken bewegen
     LedM_Warten.SingleLED:=true;
     LedM_Warten.Section2Value:=100;
     LedM_Warten.Section3Value:=100;
     LedM_Warten.Position:=BalkenDurchlauf;
     LedM_Warten.Update;
     end;
    end;
    
    procedure TFrm_Startseite.Timer_GoTimer(Sender: TObject);
    begin
    if Timerv=1
     then
     Timer_Warten.Enabled:=True
     else
     Timer_Warten.Enabled:=False;
    end;
    
    end.
    
     
  22. 12. April 2008
    AW: Adressverwaltung @ Work [Eure Mithilfe ist gefragt]

    Würde dir das auch so empfehlen wie Fanatic es mit Listen beschrieben hat, koennte dir da auch was von mir gecodetes dafür geben, was die ganze sache erleichtern und übersichtlicher machen sollte ...
    Kannst dich ja mal bei bedarf melden.

    So far ...
    Weizenbier
     
  23. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.