AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Temp-Ordner als Konstante vor Programmstart?
Thema durchsuchen
Ansicht
Themen-Optionen

Temp-Ordner als Konstante vor Programmstart?

Ein Thema von stho · begonnen am 31. Jan 2010 · letzter Beitrag vom 31. Jan 2010
Antwort Antwort
Seite 1 von 2  1 2      
stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#1

Temp-Ordner als Konstante vor Programmstart?

  Alt 31. Jan 2010, 15:08
Hallo leute
ich habe da ein kleines Problem

ich benutze in meinem Programm eine DLL die vorhanden sein muss wenn das Programm startet. Also kann ich sie auch nicht als resource hinzu fügen und dann zur laufzeit erzeugen.
Eine lösung für das droppen habe ich schon gefunden. Ein anderes Tool schmeißt die benötigte dll in das TEMP-verzeichniss

Nun könnt ihr euch vielleicht schon denken wo das problem liegt...
Ich möchte das Verzeichniss des TEMP-Ordners als Konstante hinterlegen da er sonst die DLL nicht findet...

mit "DLL_FILE = '%temp%\sqlite3.dll'" geht das leider nicht

Wie kann ich das realisieren?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Temp-Ordner als Konstante vor Programmstart?

  Alt 31. Jan 2010, 15:10
Hallo,

das geht mit GetSpecialFolderGetSpecialFolder. Ich habe nur im Hinterkopf, dass man das nicht mehr verwenden sollte. Sicher bin ich mir aber nicht.
  Mit Zitat antworten Zitat
stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Temp-Ordner als Konstante vor Programmstart?

  Alt 31. Jan 2010, 15:14
nun, danke schonmal für die schnelle hilfe
doch leider ist dieser aufruf schon zu spät...

ich brauche eine fest hinterlegte konstante (wenn es so eine gibt) mit der man das TEMP-Verzeichniss ansprechen kann
vielleicht gibt es da ja sowas...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Temp-Ordner als Konstante vor Programmstart?

  Alt 31. Jan 2010, 15:17
Warum zu spät?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Temp-Ordner als Konstante vor Programmstart?

  Alt 31. Jan 2010, 15:22
Zitat von stho:
mit "DLL_FILE = '%temp%\sqlite3.dll'" geht das leider nicht
Ist ja auch klar. "temp" ist nur eine Umgebungsvariable die der Windows Explorer bei Eingabe von %temp% automatisch auflöst. In deinem Programm müsstest du das selbst machen.

Falls du sqlite3.dll statisch gebunden hast: Wieso lieferst du diese DLL nicht in deinem Anwendungverzeichnis mit? Oder baust deinen Zugriff nicht auf dynamische Bindung (oder bei D2010 auf delay loading) um?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Temp-Ordner als Konstante vor Programmstart?

  Alt 31. Jan 2010, 15:24
Weil die DLL statisch gelinkt wird. Link die DLL dynamisch und füge sie als Ressource hinzu. Dann brauchst du auch nicht diesen komischen Dropper, der eventuell sogar als Virus erkannt wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Temp-Ordner als Konstante vor Programmstart?

  Alt 31. Jan 2010, 15:46
die Konstante wird hier geladen:
Delphi-Quellcode:
const
{$IF Defined(MSWINDOWS)}
  SQLiteDLL = 'sqlite3.dll';
[...]
und hier ist wird die konstante verwendet:
[delphi]
function SQLite3_Open(filename: PAnsiChar; var db: TSQLiteDB): integer; cdecl; external SQLiteDLL name 'sqlite3_open';
function SQLite3_Close(db: TSQLiteDB): integer; cdecl; external SQLiteDLL name 'sqlite3_close';
function SQLite3_Exec(db: TSQLiteDB; SQLStatement: PAnsiChar; CallbackPtr: TSQLiteExecCallback; UserData: Pointer; var ErrMsg: PAnsiChar): integer; cdecl; external SQLiteDLL name 'sqlite3_exec';
[delphi]

nun, wie linke ich denn dynamisch? ja, als resource hinzu fügen kann ich, währe natürlich auch schön
aber leider habe ich keine ahnung wie ich "dynamisch linke"
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Temp-Ordner als Konstante vor Programmstart?

  Alt 31. Jan 2010, 15:49
Zitat von stho:
die Konstante wird hier geladen:
Delphi-Quellcode:
const
{$IF Defined(MSWINDOWS)}
  SQLiteDLL = 'sqlite3.dll';
[...]
Da wird nichts geladen. da wird nur eine Konstante definiert/zugewiesen. Stecht doch auch drüber: const.

Zitat:
nun, wie linke ich denn dynamisch? ja, als resource hinzu fügen kann ich, währe natürlich auch schön
aber leider habe ich keine ahnung wie ich "dynamisch linke"
Sollte in jedem DLL Tutorial stehen. Und wenn nicht findet sich dazu bestimmt was im Forum: Delphi-Referenz durchsuchendll dynamisch laden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Temp-Ordner als Konstante vor Programmstart?

  Alt 31. Jan 2010, 16:36
gut, habe mir das mit dem dynamischen laden angeschaut...
einziges problem ist nur, das dort UNZÄHLIGE funktionen aufgerufen werden, die ich doch nicht alle so laden kann
es ist leider ziemlich verzwickt...

gibt es wirklich keine andere alternative???
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Temp-Ordner als Konstante vor Programmstart?

  Alt 31. Jan 2010, 16:37
Nimm doch einen vorhandenen SQLite-Wrapper
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 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