ExtractFilePath(ParamStr(0)) für 4 Datenmodule anwenden

  • ExtractFilePath(ParamStr(0)) für 4 Datenmodule anwenden

    Hallo Liebe Delphi-Gemeinde!

    Mein Programm arbeitet mit 4 Datenmodulen und 4 DB-Grids. Es funktioniert soweit auch alles. Das Ding ist jetzt, wenn man das Programm auf einem anderen PC ausführt, dann muss die Turbo-DB - .tdbd - Datei wie bei meinem PC im gleichen Pfad liegen (E:\db\...), das tut Sie aber meistens auf einem anderen System nicht.

    Bei einem einzigen Datenmodul hatt ich das bisher so gemacht:
    [code:1]procedure TForm1.FormCreate(Sender: TObject, Anzahl): integer;
    var dbfrm: string;

    begin
    dbfrm := ExtractFilePath(ParamStr(0))+'db/db.tdbd';

    FormCreate.TdbTable1.Active := False;
    try
    FormCreate.TdbTable1.DatabaseName := dbfrm;
    FormCreate.TdbTable1.TableName := 'pr';
    FormCreate.TdbTable1.Active := True;
    except
    MessageBeep(0);
    ShowMessage('Die Tabelle db.tdbd befindet' + #10#13 +'sich nicht im angegebenen Verzeichnis!')

    end

    end;[/code:1]

    jetzt ist mein Problem, dass ich ja 4 Datenmodule benutze. Jetzt hatte ich mir das mit meinem Freund, der FOR-Schleife, zu lösen und zwar ungefähr so:

    [code:1]
    procedure TForm1.FormCreate(Sender: TObject, Anzahl): integer;
    var dbfrm: string;
    var Anzahl: integer;
    var i: integer;
    begin
    Anzahl:=4;

    for i:=1 to Anzahl do

    dbfrm := ExtractFilePath(ParamStr(0))+'db/db.tdbd';

    FormCreate.TdbTable1.Active := False;
    try
    FormCreate.TdbTable1.DatabaseName := dbfrm;
    FormCreate.TdbTable1.TableName := 'pr';
    FormCreate.TdbTable1.Active := True;
    except
    MessageBeep(0);
    ShowMessage('Die Tabelle db.tdbd befindet' + #10#13 +'sich nicht im angegebenen Verzeichnis!')
    end

    end;
    [/code:1]

    jetzt sehe ich aber den Wald vor lauter Bäumen nicht mehr. Kann mir jemand helfen biddö... dangge.
  • Hallo im Forum ;)

    So wie ich das sehe, möchtest du die einzelnen Pfade in die Variable dbfrm gespeichert haben, jedoch wird durch die Schleife bei jedem Durchlauf die Variable überschrieben, dadurch gehen dir die Informationen aus dem vorigen Schleifendurchlauf verloren...

    Änder die Variable dbfrm zu einem Array:
    [code:1]var dbfrm: array[1..4] of Integer; // wenn integer nicht geht, probier string[/code:1]
    , dann kannst du in der Schleife schreiben:
    [code:1]
    dbfrm := ExtractFilePath(ParamStr(0))+'db/db.tdbd';
    [/code:1]

    Dadurch bekommst du für dbfrm[1],dbfrm[2],dbfrm[3],dbfrm[4] je einen Pfad.

    Dieses Array könntest du dann im Form.Create-Abschnitt über eine weitere Schleife aufrufen lassen...

    [code:1]
    for k: = 1 to anzahl do
    FormCreate.TdbTable1.DatabaseName := dbfrm[k]; [/code:1]

    Bestimmt wirste jetzt einige Syntaxfehler haben, aber ich hoffe, dass ich dir im Grundsatz helfen konnte^^
    Was wir wissen ist ein Tropfen, was wir nicht wissen ein Ozean.

    www.bussgeldkataloge.eu - Die Seite für Autofahrer
  • Oder noch einfacher...



    [code:1]for i:=1 to Anzahl do
    begin

    dbfrm := ExtractFilePath(ParamStr(0))+'db/db.tdbd';

    FormCreate.TdbTable1.Active := False;
    try
    FormCreate.TdbTable1.DatabaseName := dbfrm;
    FormCreate.TdbTable1.TableName := 'pr';
    FormCreate.TdbTable1.Active := True;
    except
    MessageBeep(0);
    ShowMessage('Die Tabelle db.tdbd befindet' + #10#13 +'sich nicht im angegebenen Verzeichnis!')
    end;
    [/code:1]

    wir setzen einfach den Ausführteil mit in die Schleife rein, dadurch wird nach jedem Schleifendurchlauf der Form.Create-Bereich ausgeführt ;)