Domino 9 und frühere Versionen > ND8: Entwicklung

@Subset( @DBName ; -1 ) <> NotesDatabase.FilePath

<< < (2/3) > >>

marschul:

--- Zitat von: Tode am 20.09.12 - 16:18:38 ---Ansätze:
Evaluate( @Subset( @DbName ; -1 ) ), geht aber nur, wenn ich den Pfad der "aktuellen" Datenbank wissen will...

--- Ende Zitat ---

Klingt danach, dass das Ziel ist, den Pfad eine anderen DB zu ermitteln? Was, wenn man dem Evaluate als zweiten Parameter etwas über die Ziel-DB mitgibst? Laut Hilfe sind da wohl auch andere Objekte als Documents mgl. - wäre mal interessant, ob das auch mit einem DB-Objekt funktioniert...

Peter Klett:
Dann würde ich das mit dem Directory aus der ini machen, prüfen, ob
Left (Lcase (Filepath (Len (ini-Eintrag)))) = Lcase (ini-Eintrag)
wenn ja, dann alles rechts davon (wegen Groß-Kleinschreibung), evtl. auf beginnenden Backslash prüfen.

Tode:
Es geht bei der Anforderung schlicht darum, mir den Pfad einer lokalen Datenbank in der notes.ini zu merken. Diverse Symbolleisten- Aktionen greifen dann auf diese Info zu. Und sobald dann über diesen Pfad die Datenbank geöffnet wird, habe ich zwei Repliken im Workspace...

Darum geht es...

Peter Klett:
Hallo Tode,

als ich vorhin Deinen letzten Beitrag las, verstand ich nicht, was Du mir damit sagen wolltest. Es bedurfte eines lockeren 15-km-Laufes, bevor ich den Tages- und Wochenmüll soweit verarbeiten konnte, dass ich schnallte, was Du meinst, bzw. wie Du meinen Beitrag übersetzt hast.

Das Ziel war mir klar: aus Filepath nur den zum Notes-Dataverzeichnis relativen Teil herauszufiltern. Ich vermute, dass Du mich so verstanden hast, dass Du es später mit dem von Dir geschriebenen Ini-Eintrages machen solltest. Ich meinte mit Ini-Eintrag den Directory-Eintrag.

Deshalb nochmal deutlich, was ich meine. Ich weiß, dass ich Dir das nicht erklären muss, ich tue es für die Mitleser.

Der Directory-Eintrag lautet:

C:\Notes\Data\

Filepath gibt:

C:\Notes\data\test\Test.nsf

Ein strleft reicht hier nicht, da C:\Notes\Data\ nicht in C:\Notes\data\test\Test.nsf enthalten ist.

Vor dem strleft alles mit Lcase umwandeln, ist auch nicht gut, weil dann anstelle von test\Test.nsf test\test.nsf zurückkäme.

Deshalb

If Left (Lcase ("C:\Notes\data\test\Test.nsf"), Len ("C:\Notes\Data\")) = Lcase ("C:\Notes\Data\") Then
   filepathkorrekt = Mid ("C:\Notes\data\test\Test.nsf", Len ("C:\Notes\Data\") + 1)
End If

Falls im Directory nur C:\Notes\Data steht, bekommt man ein \test\Test.nsf zurück, deshalb zuletzt noch ein

Do While Left (filepathkorrekt, 1) = "\"
   filepathkorrekt = Mid (filepathkorrekt, 2)
Loop

Das ganze packt man sich noch als wiederverwendbare Funktion in eine zentrale Bibliothek und hat dann m.E. alle Eventualitäten abgefrühstückt (außer, dass statt \ ein / verwendet wird, habe ich aber noch nirgends gesehen).

Soweit mein Beitrag zum Wochenende, wünsche ein angenehmes ...

Tode:
Danke fürs aufdröseln...
Aaaber: Wenn man mit Verzeichnislinks arbeitet, dann hilft das alles nix.
Dann steht im FilePath sowas:

E:\AusgelagertesData\development\test.nsf

im Data- Verzeichnis ist dann ein Textfile "development.dir" mit dem Inhalt:
E:\AusgelagertesData\development\

und @DbName würde liefern "development\test.nsf"

Mit Bordmitteln kriege ich das Ergebnis von @DbName so nicht reproduziert... Da müsste ich schon jede Menge Voodoo anwenden...

Also: Danke für die Anteilnahme, aber mein Problem lässt sich damit wohl nicht lösen...

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln