Page 1 of 1

Umgebungsvariablen in project.ProjectSettings.AttachmentsFol

PostPosted: 2017-11-08 15:53
by jay-squared
Liebes Citavi-Team,

ich sitze an einem AddOn, welches einem Titel die Endseite hinzufügt, indem es der Startseite die Seitenzahl des Anhangs hinzufügt.

Das geht relativ gut per

Code: Select all
                foreach (Location location in pdfLocations)
                {
                    Document document = null;
                    var address = location.Address.UriString;

                    document = new Document(root + address);

                    if (document != null)
                    {
                        pageCount = document.GetPageCount();
                    }
                }


Nun ist mir aber folgendes aufgefallen. Wenn ich die Variable "root" per

Code: Select all
String root = project.ProjectSettings.AttachmentsFolderPath + "\\";


definiere, enthält root Variablen für %HOMEDRIVE% und %HOMEPATH% (und dann in meinem Fall noch "OneDrive\Citavi Attachments"). Das funktioniert aber nicht für

Code: Select all
document = new Document(root + address);


Was hingegen funktioniert, ist wenn ich "root" per Hand als absoluten Pfad definiere. M.E. sollte das aber doch keinen Unterschied machen?

Weiteres Problem. Wenn root mit einer Variable enden würde, müsste ich nicht per Hand "\\" hinzufügen, wenn aber nach der Variable noch weiterer Text steht, dann muss ich das. Es ist also nicht weiteres möglich, root allgemeingültig zu definieren (ich könnte natürlich testen, ob root mit einem % endet, und je nachdem danach "\\" hinzufügen).

Beste Grüße
JJ

Re: Umgebungsvariablen in project.ProjectSettings.Attachment

PostPosted: 2017-11-09 16:01
by jay-squared
Die Frage lautet übrigens: Bug oder Feature? So ist es ja auch schwer, ein Makro zu schreiben, das sinnvoll an den gesamten Pfad eines Anhangs kommt.

Re: Umgebungsvariablen in project.ProjectSettings.Attachment  Topic is solved

PostPosted: 2017-11-09 16:05
by Sebastian Pabel
Hallo, JJ,

Feature, denn es ist gar nicht nötig, sich den Pfad selbst zusammenzusetzen. In Citavi 6 sollten Sie zunächst prüfen, ob die Datei ein Attachment ist, also

Code: Select all
if (location.Address.LinkedResourceType == LinkedResourceType.AttachmentFile)


Dann bekommen Sie über

Code: Select all
Uri fileUri = location.Address.Resolve();


ein Uri-Objekt, das den kompletten Pfad enthält. Dieses Objekt können Sie dann nach belieben in verschiedene Strings konvertieren, z.B.

Code: Select all
string localPath = fileUri.LocalPath;


In Citavi 5 funktioniert das übrigens ganz ähnlich:

Code: Select all
string localPath = String.Empty;

if (location.AddressUri.AddressInfo == ElectronicAddressInfo.Attachment)
    {
        Uri fileUri = location.AddressUri.AbsoluteUri;
        localPath = fileUri.LocalPath;
    }


Viele Grüße
Sebastian

Wurde Ihre Frage vollständig beantwortet? Bitte klicken Sie auf das grüne Häkchen (= Antwort akzeptieren) oben rechts in meiner Antwort. Andere Forenbenutzer können sich dann leichter orientieren, wenn sie auf der Suche nach einer Lösung sind.

Re: Umgebungsvariablen in project.ProjectSettings.Attachment

PostPosted: 2017-11-09 16:10
by jay-squared
Lieber Herr Pabel,

Vielen Dank!

Der Trick war

Code: Select all
location.Address.Resolve();


Mir war nicht klar, dass das eine ganze Uri ergibt. In Citavi 5 hatte ich es so gemacht, wie von Ihnen beschrieben, da ich mir da dank Autocomplete zusammenreimen konnte, wie ich an die Uri komme.