Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Joblist - Aufgabenplaner (https://www.delphipraxis.net/181932-joblist-aufgabenplaner.html)

AlexII 18. Nov 2014 18:48

AW: Joblist - Aufgabenplaner
 
Zitat:

Zitat von hathor (Beitrag 1280240)
Ich finde das nicht sehr lustig, wenn jedes poplige Programm gleich mit dem WINDOWS-Start die Festplatte blockiert mit solchen Aktivitäten!

Als erstes braucht das Prog diese Option, weil es da um Aufgaben und Termine geht und zweitens muss diese vom User aktiviert werden. Also keine Panik, wenn man selbst es nicht aktiviert bleibt die Registry unberührt. :wink:

Dejan Vu 19. Nov 2014 04:05

AW: Joblist - Aufgabenplaner
 
Zitat:

Zitat von hathor (Beitrag 1280240)
Ich finde das nicht sehr lustig, wenn jedes poplige Programm gleich mit dem WINDOWS-Start die Festplatte blockiert mit solchen Aktivitäten! ... Es ist SCHWACHSINNIG,

Und ich finde es nicht sehr lustig, das du Programme als poplig :mrgreen: bezeichnest und die Vorgehensweise als 'SCHWACHSINNIG' bezeichnest. Das ist unhöflich und im Ton vollkommen unangemessen. Komisch, so ein Rüpel bist Du doch gar nicht.

Es ist durchaus legitim, ein Programm in den Autostart zu packen, auch in die Registry. Dazu ist die Funktionalität schließlich da. Wenn DU damit ein Problem hast, kannst DU kannst es ja anders starten. Blöd ist das natürlich, wenn ein Programm beharrt, über die Registry gestartet zu werden, also nicht flexibel ist. Hier ist das aber offensichtlich nicht der Fall.

Zitat:

Zitat von hathor (Beitrag 1280240)
Damit verzögert sich der Boot-Vorgang des Betriebssystems....das eigene Programm beim Boot-Vorgang zu laden

Der 'Boot-Vorgang' ist mit Starten der Autostart-Programme längst vorbei. Das Betriebssystem ist vollständig geladen und betriebsbereit. Irgendwie muss man sich ja anmelden, ne wahr?
Wie macht man das eigentlich, das 'das eigene Programm beim Boot-Vorgang zu laden'? Welche Dateien müssen wo registriert werden? Wäre das nicht ein kleines Sicherheitsrisiko?

Zum Thema: Wo befindet sich die Datenbank, also in welchem Ordner? Netzlaufwerke sind vermutlich noch nicht gebunden und verfügbar, ein typischer Fehler.

AlexII 19. Nov 2014 08:21

AW: Joblist - Aufgabenplaner
 
Zitat:

Zitat von Dejan Vu (Beitrag 1280267)
Zum Thema: Wo befindet sich die Datenbank, also in welchem Ordner? Netzlaufwerke sind vermutlich noch nicht gebunden und verfügbar, ein typischer Fehler.

Es handelt sich um eine SQLite DB, diese liegt im Programmverzeichnis. Das Prog ist portable, der Programmordner kann also überall liegen, aber die .exe und die DB liegen auf jeden Fall (noch) zusammen.
Aber ich habe schon eine Idee, vor dem Programmaufruf nach der Verbindung zu der DB zu schauen, und falls sie noch nicht besteht, das Prog kurz sleepen lassen und danach neu versuchen bis die besteht.

hathor 19. Nov 2014 12:53

AW: Joblist - Aufgabenplaner
 
Relative Pfade durch absolute ersetzen, z.B.

Delphi-Quellcode:
...
  if not FileExists(ExtractFilepath (Application.ExeName) + 'DEINE.db') then
  begin
    ShowMessage('The database does not exist. Please create one.');
    Exit;
  end;

...

AlexII 19. Nov 2014 12:57

AW: Joblist - Aufgabenplaner
 
Zitat:

Zitat von hathor (Beitrag 1280325)
Relative Pfade durch absolute ersetzen, z.B.

Delphi-Quellcode:
...
  if not FileExists(ExtractFilepath (Application.ExeName) + 'DEINE.db') then
  begin
    ShowMessage('The database does not exist. Please create one.');
    Exit;
  end;

...

Habe ich schon, aber es hilft nicht, siehe hier -> Neues Thema

hathor 19. Nov 2014 13:09

AW: Joblist - Aufgabenplaner
 
Liste der Anhänge anzeigen (Anzahl: 1)
Bei mir geht's.
Siehe Anhang...

-AUTORUN anklicken
-Programm beenden
-neu booten
-SQLtest startet MIT DB.

AlexII 19. Nov 2014 13:16

AW: Joblist - Aufgabenplaner
 
Zitat:

Zitat von hathor (Beitrag 1280331)
Bei mir geht's.
Siehe Anhang...

-AUTORUN anklicken
-Programm beenden
-neu booten
-SQLtest startet MIT DB.

Und wie sieht Dein Eintrag in der Registry aus? Kannst Du mir de SourceCode schicken?

hathor 19. Nov 2014 14:34

AW: Joblist - Aufgabenplaner
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das ist die mitgelieferte Demo - etwas erweitert:

Delphi-Quellcode:
unit Main;

interface

uses
  Windows, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Registry;

type
  TForm1 = class(TForm)
    Panel_Actions: TPanel;
    Memo_Result: TMemo;
    Button_DB_Create: TButton;
    Button_DB_Read: TButton;
    Button1: TButton;
    cbAutoRun: TCheckBox;
    Button2: TButton;
    procedure Button_DB_CreateClick(Sender: TObject);
    procedure Button_DB_ReadClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

uses
  SQLite3, SQLite3Wrap;

{$R *.dfm}

function CreateAutorunEntry(const AName, AFilename: String; active: Boolean): Boolean;
var
 Reg: TRegistry;
begin
 Reg := TRegistry.create;
 try
     Reg.Rootkey:= HKEY_CURRENT_USER;
     Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True);
     if active = true then
     Reg.WriteString(AName, AFilename)
     else
     Reg.DeleteValue(AName);
 finally
   Reg.Free;
   Result := true;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
cbAutoRun.Checked:= CreateAutorunEntry(Application.Title, ParamStr(0),true);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
cbAutoRun.Checked:= not CreateAutorunEntry(Application.Title, ParamStr(0),false);
end;

procedure TForm1.Button_DB_CreateClick(Sender: TObject);
var
  DB: TSQLite3Database;
  Stmt: TSQLite3Statement;
  IDs: array[1..6] of Integer;
begin
  // Delete database if it already exists
  DeleteFile(ExtractFilepath (Application.ExeName) + 'artists.db');

  // Create database and fill it with example data
  Screen.Cursor := crHourGlass;
  DB := TSQLite3Database.Create;
  try
    DB.Open(ExtractFilepath (Application.ExeName) + 'artists.db');

    // Create table "artists"
    DB.Execute('CREATE TABLE artists (name TEXT, born REAL, died REAL)');

    // Fill the table with artists
    Stmt := DB.Prepare('INSERT INTO artists (name, born, died) VALUES (?, ?, ?)');
    try
      Stmt.BindText (1, 'Leonardo da Vinci');
      Stmt.BindDouble(2, EncodeDate(1452, 4, 15));
      Stmt.BindDouble(3, EncodeDate(1519, 5, 2));

      Stmt.StepAndReset; // StepAndReset executes a prepared statement
                         // and resets it so we can reuse it again

      IDs[1] := DB.LastInsertRowID; // Save newly added artist's ID to use it
                                    // when filling "paintings" table below

      Stmt.BindText (1, 'Raphael');
      Stmt.BindDouble(2, EncodeDate(1483, 3, 28));
      Stmt.BindDouble(3, EncodeDate(1520, 4, 6));
      Stmt.StepAndReset;
      IDs[2] := DB.LastInsertRowID;

      Stmt.BindText (1, 'Arkhip Kuindzhi');
      Stmt.BindDouble(2, EncodeDate(1842, 1, 27));
      Stmt.BindDouble(3, EncodeDate(1898, 7, 24));
      Stmt.StepAndReset;
      IDs[3] := DB.LastInsertRowID;

      Stmt.BindText (1, 'Nicholas Roerich');
      Stmt.BindDouble(2, EncodeDate(1874, 10, 9));
      Stmt.BindDouble(3, EncodeDate(1947, 12, 13));
      Stmt.StepAndReset;
      IDs[4] := DB.LastInsertRowID;

      Stmt.BindText (1, 'Ivan Aivazovsky');
      Stmt.BindDouble(2, EncodeDate(1817, 7, 29));
      Stmt.BindDouble(3, EncodeDate(1900, 5, 5));
      Stmt.StepAndReset;
      IDs[5] := DB.LastInsertRowID;

      Stmt.BindText (1, 'Ivan Shishkin');
      Stmt.BindDouble(2, EncodeDate(1832, 1, 25));
      Stmt.BindDouble(3, EncodeDate(1898, 3, 20));
      Stmt.StepAndReset;
      IDs[6] := DB.LastInsertRowID;
    finally
      Stmt.Free;
    end;

    // Create table "paintings"
    DB.Execute('CREATE TABLE paintings (title TEXT, year INTEGER, artist INTEGER)');

    // Fill the table with paintings info
    Stmt := DB.Prepare('INSERT INTO paintings (title, year, artist) VALUES (?, ?, ?)');
    try
      // Leonardo da Vinci
      Stmt.BindText(1, 'The Virgin and Child with St. Anne');
      Stmt.BindInt (2, 1508);
      Stmt.BindInt (3, IDs[1]);
      Stmt.StepAndReset;

      Stmt.BindText(1, 'Mona Lisa');
      Stmt.BindInt (2, 1519);
      Stmt.BindInt (3, IDs[1]);
      Stmt.StepAndReset;

      // Raphael
      Stmt.BindText(1, 'Sistine Madonna');
      Stmt.BindInt (2, 1514);
      Stmt.BindInt (3, IDs[2]);
      Stmt.StepAndReset;

      Stmt.BindText(1, 'Transfiguration');
      Stmt.BindInt (2, 1520);
      Stmt.BindInt (3, IDs[2]);
      Stmt.StepAndReset;

      // Arkhip Kuindzhi
      Stmt.BindText(1, 'After a rain');
      Stmt.BindInt (2, 1879);
      Stmt.BindInt (3, IDs[3]);
      Stmt.StepAndReset;

      Stmt.BindText(1, 'Elbrus');
      Stmt.BindInt (2, 1895);
      Stmt.BindInt (3, IDs[3]);
      Stmt.StepAndReset;

      // Nicholas Roerich
      Stmt.BindText(1, 'To Kailas. Lahul');
      Stmt.BindInt (2, 1932);
      Stmt.BindInt (3, IDs[4]);
      Stmt.StepAndReset;

      Stmt.BindText(1, 'Krishna');
      Stmt.BindInt (2, 1929);
      Stmt.BindInt (3, IDs[4]);
      Stmt.StepAndReset;

      // Ivan Aivazovsky
      Stmt.BindText(1, 'The Mary Caught in a Storm');
      Stmt.BindInt (2, 1892);
      Stmt.BindInt (3, IDs[5]);
      Stmt.StepAndReset;

      Stmt.BindText(1, 'Brig "Mercury" Attacked by Two Turkish Ships');
      Stmt.BindInt (2, 1892);
      Stmt.BindInt (3, IDs[5]);
      Stmt.StepAndReset;

      // Ivan Shishkin
      Stmt.BindText(1, 'Morning in a Pine Forest');
      Stmt.BindInt (2, 1889);
      Stmt.BindInt (3, IDs[6]);
      Stmt.StepAndReset;

      Stmt.BindText(1, 'Wood Distances');
      Stmt.BindInt (2, 1884);
      Stmt.BindInt (3, IDs[6]);
      Stmt.StepAndReset;
    finally
      Stmt.Free;
    end;

    ShowMessage('Database created.');
  finally
    DB.Free;
    Screen.Cursor := crDefault;
  end;
end;

procedure TForm1.Button_DB_ReadClick(Sender: TObject);
var
  DB: TSQLite3Database;
  Stmt_Artists,
  Stmt_Paintings: TSQLite3Statement;
begin
  if not FileExists(ExtractFilepath (Application.ExeName) + 'artists.db') then
  begin
    ShowMessage('The database does not exist. Please create one.');
    Exit;
  end;

  DB := TSQLite3Database.Create;
  try
    DB.Open(ExtractFilepath (Application.ExeName) + 'artists.db');

    // Show all artists and their paintings
    Stmt_Artists := DB.Prepare('SELECT rowid, name, born, died FROM artists ORDER BY born');
    Stmt_Paintings := DB.Prepare('SELECT title, year FROM paintings WHERE artist = ? ORDER BY year');
    try
      while Stmt_Artists.Step = SQLITE_ROW do
      begin
        Memo_Result.Lines.Add(Stmt_Artists.ColumnText(1));
        Memo_Result.Lines.Add(DateToStr(Stmt_Artists.ColumnDouble(2)) + ' - ' + DateToStr(Stmt_Artists.ColumnDouble(3)));

        Memo_Result.Lines.Add('paintings:');
        Stmt_Paintings.BindInt(1, Stmt_Artists.ColumnInt(0));
        while Stmt_Paintings.Step = SQLITE_ROW do
          Memo_Result.Lines.Add('   ' + Stmt_Paintings.ColumnText(0) + ' (' + Stmt_Paintings.ColumnText(1) + ')');
        Stmt_Paintings.Reset;

        Memo_Result.Lines.Add('');
      end;
    finally
      Stmt_Paintings.Free;
      Stmt_Artists.Free;
    end;
  finally
    DB.Free;
  end;

  // Add separator
  Memo_Result.Lines.Add('------------------------------------------------');
  Memo_Result.Lines.Add('');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Button_DB_ReadClick(Self);
end;

end.

AlexII 19. Nov 2014 14:41

AW: Joblist - Aufgabenplaner
 
Danke Dir, ich habe es jetzt selber gelöst. -> hier


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 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