PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Delphi: überprüfen ob Alias existiert


x-dragon
2002-12-12, 11:13:46
Tag Leute, ich brauch mal Hilfe :)

Einen neuen Alias anlegen kann ich ja einfach mit ...

AddStandardAlias('xyz', 'C:\TESTING\DEMOS\', 'Paradox');

... allerdings macht das natürlich nur Sinn wenn der Alias auch nicht existiert, denn nur dann muss ich das DB-Verzeichniss abfragen für den neu zuerstellenden Alias.

Das Problem dabei ist, das ich bisher nicht auf die DB-Komponenten von Delphi zurückgreife und es auch möglichst weiterhin vermeiden will. Hab in der Vergangenheit zu viele Probleme damit gehabt.

[edit]
einen neuen Alias anlegen geht anscheind doch nicht so ohne weiteres, mit dem Befehl wird doch auf eine DB-Komponente zurückgegriffen

[edit2]
und der Alias würde sogar nur temporär erstellt :(

[edit3]
ne doch nicht, die BDE-Daten kann man dann auch speichern :)
ich glaube das bekomme ich heute sogar noch fertig ...

x-dragon
2002-12-12, 14:04:47
Für diejenigen die es interessiert, hier ist meine Lösung:

procedure TFmHaupt1.AliasCheck(aliasname : String);
var
DBdir : String;

begin
with Session1 do

if FindDatabase(aliasname) = nil then
begin
DirDlg.InitialDir := ExtractFilePath(Application.ExeName) + 'DB\';
DirDlg.GetDir('Test',DBdir);

while MessageDlg('Ist das Verzeichniss korrekt? '+#10#13+DBdir, mtConfirmation , [mbYes, mbNo], 0) = mrNo do
DirDlg.GetDir('Test',DBdir);

AddStandardAlias(aliasname, DBdir, 'PARADOX');

ConfigMode := cmAll;
SaveConfigFile;
end;

end;

*gelöscht*

Hat noch jemand Verbesserungsvorschläge?


[edit]
Der Befehl "FindDatabase" funktioniert nur richtig, wenn man mit den kompletten DB-Komponenten arbeitet, also in meinem Fall nicht zu gebrauchen. Wie hat das bloß gestern funktioniert ...

Aber ich hol mir jetzt einfach die vorhandenen Aliase in eine Stringlist (GetAliasNames(List: TStrings);) und schau dann noch ob der richtige dabei ist :).

[edit2]

Falls hier doch noch wer reinschaut, hier ist dir korrigierte Fassung:


procedure TFmHaupt1.AliasCheck(aliasname : String);
{*************************************************}
var
i : Smallint;
ok : Boolean;
DBdir : String;
list : TStrings;
begin
list := TStringList.Create;
ok := False;

with SesAlias do
begin
GetAliasNames(list);

for i := 0 to list.Count -1 do
if aliasname = list[i] then
begin
ok := True;
break;
end;

if ok = False then
begin
DirDlg.InitialDir := ExtractFilePath(Application.ExeName) + 'DB\';
DirDlg.GetDir('test',DBdir);

while MessageDlg('Ist das Verzeichniss korrekt? '+#10#13+
DBdir, mtConfirmation , [mbYes, mbNo], 0) = mrNo do
DirDlg.GetDir('test',DBdir);

AddStandardAlias(aliasname, DBdir, 'PARADOX');

ConfigMode := cmAll;
SaveConfigFile;
end;
end;
end;