AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Alias Pfad aus Session auslesen

Alias Pfad aus Session auslesen

Ein Thema von Sven Janssen · begonnen am 21. Jun 2006 · letzter Beitrag vom 21. Jun 2006
Antwort Antwort
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#1

Alias Pfad aus Session auslesen

  Alt 21. Jun 2006, 10:57
Datenbank: Paradox • Version: ? • Zugriff über: BDE
Guten Morgen,

mit folgendem Code lesen wir den Pfad eines Paradox Alias aus

Delphi-Quellcode:
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;
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.
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 c:\\rechnername\freigabe\daten . Leider findet dadurch unser Programm die ganzen Einstellungsdateien nicht mehr.
Ich könnte dieses Problem zwar umgehen, aber ich möchte nicht flicken, sondern herausfinden warum dies passiert.

Sven
:wq /dev/null
He who fights with monsters might take care lest he thereby become a monster - Nietzsche
  Mit Zitat antworten Zitat
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#2

Re: Alias Pfad aus Session auslesen

  Alt 21. Jun 2006, 12:43
Nachtrag:
Bei uns auf dem 2k Rechner tritt der Fehler $2501 "Fehler bei der initialisierung der Borland Database Engine" auf
:wq /dev/null
He who fights with monsters might take care lest he thereby become a monster - Nietzsche
  Mit Zitat antworten Zitat
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#3

Re: Alias Pfad aus Session auslesen

  Alt 21. Jun 2006, 14:32
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
:wq /dev/null
He who fights with monsters might take care lest he thereby become a monster - Nietzsche
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#4

Re: Alias Pfad aus Session auslesen

  Alt 21. Jun 2006, 14:42
Zitat von Sven Janssen:
Nachtrag:
Bei uns auf dem 2k Rechner tritt der Fehler $2501 "Fehler bei der initialisierung der Borland Database Engine" auf
Heißt soviel wie :
Code:
Insufficient memory for this operation
, also irgendwelche Speicherprobleme, warum auch immer...

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 von Sven Janssen:
...
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 c:\\rechnername\freigabe\daten . ...
Wird im Verlaufe des Programmes irgendwo der Pfad zusammengesetzt, sprich Rückgabe aus getaliaspfad plus \\rechnername\freigabe\daten??

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:
session1.AddstandardAlias(aliasname,\\rechnername\freigabe\daten,'PARADOX');
Und den Pfad auslesen geht auch so:
Code:
if MySL.Count>0 then
result := Copy(MySL[0],6,255);
,da der Pfad immer in der ersten Zeile steht

//EDIT Zumindest ist der BDE-Fehler behoben
  Mit Zitat antworten Zitat
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#5

Re: Alias Pfad aus Session auslesen

  Alt 21. Jun 2006, 15:00
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.
:wq /dev/null
He who fights with monsters might take care lest he thereby become a monster - Nietzsche
  Mit Zitat antworten Zitat
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#6

Re: Alias Pfad aus Session auslesen

  Alt 21. Jun 2006, 15:02
Zitat von raiguen:
Und den Pfad auslesen geht auch so:
Code:
if MySL.Count>0 then
result := Copy(MySL[0],6,255);
,da der Pfad immer in der ersten Zeile steht ;)
Zu riskant.
Aber so:
result := mysl.Values['PATH']; geht es elegant ;-)
:wq /dev/null
He who fights with monsters might take care lest he thereby become a monster - Nietzsche
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#7

Re: Alias Pfad aus Session auslesen

  Alt 21. Jun 2006, 15:44
Zitat von Sven Janssen:
...
Aber so:
result := mysl.Values['PATH']; geht es elegant
Jupp..gebe mich geschlagen wobei ich das irgendwo auch schon mal bei mir eingebaut habe


Zitat von Sven Janssen:
...
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.
...
Wenn TTables und TQuerys anstandslos mit dem (wahrscheinlich festverdrahteten) Alias funktionieren, wieso liest Du dann noch den Alias aus? Wieso kannst Du den Daten-Pfad nicht fest vergeben?

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...
  Mit Zitat antworten Zitat
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#8

Re: Alias Pfad aus Session auslesen

  Alt 21. Jun 2006, 17:00
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.
:wq /dev/null
He who fights with monsters might take care lest he thereby become a monster - Nietzsche
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:40 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