![]() |
Datenbank: Paradox • Version: ? • Zugriff über: BDE
Alias Pfad aus Session auslesen
Guten Morgen,
mit folgendem Code lesen wir den Pfad eines Paradox Alias aus
Delphi-Quellcode:
Dies funktioniert auch zu 99,99% korrekt. Doch nun haben wir 2 PCs auf denen das nicht,oder unter bestimmten umständen nicht richtig funktioniert.
function getaliaspfad(aliasname:string) : string;
var session1:Tsession; mysl:TStringlist; i:integer; begin MySL := TStringList.Create; Session1 := TSession.create(NIL); session1.sessionname:=aliasname; try Session1.GetAliasParams(aliasname,MySL); except try session1.AddstandardAlias(aliasname,'c:\','PARADOX'); except end; end; result:='c:\'; for I := 0 to MySL.Count - 1 do if pos('PATH',MySL[I]) > 0 then begin result:=copy(mysl[i],pos('=',MySL[I])+1,maxint); break; end; session1.free; MySL.Free; end; Der eine ist ein Windows 2000 Rechner auf dem 2 Programm laufen. Das erste Programm liest den Alias Korrekt aus, das zweite liefert einen leeren String zurück. bzw. die ganze Stringliste ist leer. Dieser Rechner steht bei uns in der Firma. Ein Windows ME Rechner eines Kunden hat das Problem das die zweiten Programm immer ein c: vor dem Pfad liefern. Normalerweise steht in dem Pfad \\rechnername\freigabe\daten . Bei allen Programmen steht dann aber
Delphi-Quellcode:
. Leider findet dadurch unser Programm die ganzen Einstellungsdateien nicht mehr.
c:\\rechnername\freigabe\daten
Ich könnte dieses Problem zwar umgehen, aber ich möchte nicht flicken, sondern herausfinden warum dies passiert. Sven |
Re: Alias Pfad aus Session auslesen
Nachtrag:
Bei uns auf dem 2k Rechner tritt der Fehler $2501 "Fehler bei der initialisierung der Borland Database Engine" auf |
Re: Alias Pfad aus Session auslesen
Hab es bei uns gelöst.
Falls es einen interessiert. SHARDMEMSIZE auf 4096 oder 8192 erhöhen und wichtig als SHAREDMEMLOCATION 0x5BDE eintragen. Vieleicht hilft es irgendwann einem einmal weiter. Gruß Sven |
Re: Alias Pfad aus Session auslesen
Zitat:
Code:
, also irgendwelche Speicherprobleme, warum auch immer...
Insufficient memory for this operation
Zu Deinem anderen Problem: das zweite Programm kann aus irgendeinem Grunde den Alias nicht lesen bzw finden und Deine Funktion getaliaspfad gibt dann natürlich nur c:\ zurück Zitat:
Nur so nebenbei: wenn der Alias aliasname nicht existiert, dann soll Deine Funktion selbigen gleich anlegen und dauerhaft in der BDE-Konfigurationsdatei abspeichern. Warum übergibst Du dann nicht gleich den 'richtigen' Pfad mit
Code:
Und den Pfad auslesen geht auch so:
session1.AddstandardAlias(aliasname,\\rechnername\freigabe\daten,'PARADOX');
Code:
,da der Pfad immer in der ersten Zeile steht ;)
if MySL.Count>0 then
result := Copy(MySL[0],6,255); //EDIT Zumindest ist der BDE-Fehler behoben ;) |
Re: Alias Pfad aus Session auslesen
Hallo,
nein der Pfad wird nicht nachträglich zusammengebaut. Genau das verwirrt mich. Wenn er nur c:\ zurückgeben würde. Den Pfad kann ich nicht feste setzen. Das Programm sitzen und liegen wo es lustig ist. Daher auch die Funktion. Diese liest den Alias aus, der auf die "Datenbank" zeigt. Darunter \parameter \einstellungen \briefe usw. liegen diverse Ordner die wir benötigen. Nur findet unser Programm diese nicht, da GetAliasParams wohl eine Exeption auslöst. Interessanterweise funktionieren die TTables und TQuery auf den gleichen Alias wunderbar. Die Methode ist relativ alt, aus den Anfängen des Programmes. Ich habe das Teil mal gerade bissel umgeschrieben und gewissen Fehlercodes abgefangen. Damit weiß ich auch direkt was wir eventuell machen müssen. interessant zu dem anderen Thema ist noch, das dies Problem nur bei Delphi4 vs. Delphi6 Programmen aufgetreten ist. Delphi4 vs. Delpgi4 und Delphi6 vs. Delphi6 gab es keine Probleme. |
Re: Alias Pfad aus Session auslesen
Zitat:
Aber so:
Delphi-Quellcode:
geht es elegant ;-)
result := mysl.Values['PATH'];
|
Re: Alias Pfad aus Session auslesen
Zitat:
Zitat:
Klaro löst GetAliasParams() eine Exception (Objekt nicht gefunden.. oder so ähnlich), wenn der Alias nicht existiert. Genauso löst AddStandardAlias() eine Exception aus, wenn der Alias schon vorhanden ist... Ich habe mich seit längerem schon von der Verwendung des Alias verabschiedet; ich setze zur Laufzeit den /die entsprechenden Datenpfade - welche in einer Konfigurationsdatei stehen - direkt; davon mal abgesehen bin ich eh auf dem Wege, die BDE zu Grabe zu tragen... |
Re: Alias Pfad aus Session auslesen
das Problem ist das unser System schon seit Jahren (gut) läuft. Wir ändern noch an dem Programm, aber sind schon dabei das auf eine SQL Datenbank umzuschreiben. Allerdings müssen wir natürlich noch das Produkt pflegen, werden aber keine großen Sprünge mehr machen.
Mit dem Alias + NetDir selber ist es normalerweise auch noch nie zu Problemen gekommen. Ob nun ein Alias oder ein Pfad in einer Konfigurationsdatei ist eigentlich gehüpft wie gesprungen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz