| Autor |
Beitrag |
dlenz
      
Beiträge: 22
|
Verfasst: Mi 17.01.07 11:01
Hallo Liebe Gemeinde,
ich möchte mein DB-Verwaltungsprogramm gerne auf einem anderen PC ausführbar machen.
Irgendwie komme ich aber mit "ExtractFilePath(ParamStr(0));" irgendwie nicht zurande.
Ich benutze eine TurboDB "db.tdbd", die im Ordner /db in meinem Programmverzeichnis liegt.
Wo muss ich denn "ExtractFilePath(ParamStr(0));" genau im Code anwenden?
|
|
MisterBum83
      
Beiträge: 245
Erhaltene Danke: 2
WIN XP
Delphi 6
|
Verfasst: Mi 17.01.07 11:51
Ich verstehe dein Problem nicht so richtig. Was willst du denn machen?
ExtractFilePath(ParamStr(0)) liefert dir den Pfad zurück, wo dein Programm ausgeführt wird.
dlenz hat folgendes geschrieben: |
Wo muss ich denn "ExtractFilePath(ParamStr(0));" genau im Code anwenden? |
Für was denn?
|
|
dlenz 
      
Beiträge: 22
|
Verfasst: Mi 17.01.07 11:54
Wenn das Programm auf einem anderen PC ausgeführt wird, dann wird meine "db.tdbd" im Ordner /db nicht gefunden, da der andere PC einen ganz anderen Laufwerksbuchstaben und Programmpfad hat, in dem das Programm gestartet wird.
ich starte das Programm z.B. im Ordner E:\Delphi-Prgs\, der andere PC aber aus dem Ordner C:\Programme\ProgrammXYZ\ und dann wird die DB nicht gefunden.
Das mein ich damit 
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Mi 17.01.07 12:01
Hä?
Ich mach das immer so:
Delphi-Quelltext 1: 2: 3:
| pfad:= includetrailingpathdelimiter(extractfilepath(application.exename)); db:= pfad + name_der_Datenbank; |
und schon steht in DB der gesamte Pfad zu deiner DB
und in Pfad, der Pfad aus dem dein Anwendung ausgeführt wird
LG
Stefan
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
dlenz 
      
Beiträge: 22
|
Verfasst: Mi 17.01.07 12:13
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74:
| unit main;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Mask, DBCtrls, DB, TdbLicense, TdbDataSet, Grids, DBGrids, Buttons;
type Tfrm_main = class(TForm) DBEdit1: TDBEdit; Image1: TImage; TdbTable1: TTdbTable; DataSource1: TDataSource; DBEdit2: TDBEdit; DBEdit3: TDBEdit; DBEdit4: TDBEdit; DBEdit5: TDBEdit; DBEdit6: TDBEdit; DBNavigator1: TDBNavigator; DBEdit7: TDBEdit; DBEdit8: TDBEdit; DBEdit9: TDBEdit; DBEdit10: TDBEdit; DBEdit11: TDBEdit; DBEdit12: TDBEdit; DBGrid1: TDBGrid; DBEdit13: TDBEdit; BitBtn1: TBitBtn; DBEdit14: TDBEdit; DBCheckBox1: TDBCheckBox; procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private public end;
var frm_main: Tfrm_main;
implementation
uses u_qr1;
{$R *.dfm}
procedure Tfrm_main.BitBtn1Click(Sender: TObject); begin liste.TdbQuery1.SQL.Clear; liste.TdbQuery1.SQL.Add('SELECT * FROM antragsgegner WHERE ID =' + DBEdit1.Text); showmessage(liste.TdbQuery1.SQL.text); liste.TdbQuery1.Open; liste.preview; end;
procedure Tfrm_main.FormCreate(Sender: TObject); var verz: string; begin verz := ExtractFilePath(ParamStr(0))+'/db/'; TdbTable1.Active := False; try TdbTable1.DatabaseName := verz; TdbTable1.TableName := 'db.tdbd'; TdbTable1.Active := True; <--- Fehlermeldung im Code-Explorer except MessageBeep(0); ShowMessage('Die Tabelle db.tdbd befindet' + #10#13 +'sich nicht im angegebenen Verzeichnis!') end end;
end. |
wieso ist da ein fehler? *grübel
im OI habe ich die Eigenschaft "DatabaseName" leer gelassen.
Moderiert von raziel: Code- durch Delphi-Tags ersetzt
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Mi 17.01.07 12:19
Wir überlegen mal:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| ... verz := ExtractFilePath(ParamStr(0))+'/db/'; ... TdbTable1.DatabaseName := verz; TdbTable1.TableName := 'db.tdbd'; ... |
So!
Was steht jetzt in verz?
Der Pfad, aus der deine Anwendung heraus ausgeführt wird.
Meintwegen C:\Programme\Test\.
Und was machst du?
Hängst noch ein Unterverzeichnis dran, was total OK ist.
Also ist verz dann -> C:\Programme\Test\db\
Und bei
Delphi-Quelltext 1:
| TdbTable1.DatabaseName := verz; |
weist du dem Datenbanknamen das Verzeichnis zu, in der die DB liegt.
Was fehlt?
Der Dateiname deiner Datenbank.
Diesen weißt du bei
Delphi-Quelltext 1:
| TdbTable1.TableName := 'db.tdbd'; |
zu.
Ist natürlich falsch.
'db.tdbd' gehört noch an dein Verzeichnis mit dran und gehört dem
Delphi-Quelltext 1:
| TdbTable1.Databasename:= verz + 'db.tdbd'; |
zugewiesen.
Ich hoffe du hast es verstanden.
LG
Stefan
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
Zuletzt bearbeitet von ZeitGeist87 am Mi 17.01.07 12:32, insgesamt 1-mal bearbeitet
|
|
dlenz 
      
Beiträge: 22
|
Verfasst: Mi 17.01.07 12:22
boahhh jau...
vielen Dank ZeitGeist!
stimmt, TableName ist ja nur die Tabelle in der Datenbankdatei... jetzt wo sies sagen, da merk ichs auch
wald vor lauter bäumen und so 
|
|
dlenz 
      
Beiträge: 22
|
Verfasst: Mi 17.01.07 12:48
Nun möchte ich die daten aus der DB-Tabelle über ein TdbQuery in einen Report übernehmen und eine Fehlermeldung sagt mir immer, dass er keine tabelle.dat findet, warum das nu wieder?
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Mi 17.01.07 13:02
Hast du deinem
Delphi-Quelltext 1:
| TdbTable1.TableName := Tabelle; |
den Tabellen-Namen zugewiesen?
LG
Stefan
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
dlenz 
      
Beiträge: 22
|
Verfasst: Mi 17.01.07 13:35
ja, den habe ich zugewiesen
|
|
dlenz 
      
Beiträge: 22
|
Verfasst: Mi 17.01.07 14:58
|
|
|