This forum is read-only - Please use our new Citavi Forum instead.
Dieses Forum dient nur zur Recherche - Bitte nutzen Sie das neue Citavi Forum für Ihre Fragen.

Umgebungsvariablen in project.ProjectSettings.AttachmentsFol Topic is solved

Installationsanleitung und allgemeine Informationen zu Citavi Add-Ons

Umgebungsvariablen in project.ProjectSettings.AttachmentsFol

Postby jay-squared » 2017-11-08 15:53

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
jay-squared
Citavi Expert
 

Re: Umgebungsvariablen in project.ProjectSettings.Attachment

Postby jay-squared » 2017-11-09 16:01

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.
jay-squared
Citavi Expert
 

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

Postby Sebastian Pabel » 2017-11-09 16:05

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.
Sebastian Pabel
Site Admin
 

Re: Umgebungsvariablen in project.ProjectSettings.Attachment

Postby jay-squared » 2017-11-09 16:10

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.
jay-squared
Citavi Expert
 


Return to Über Citavi Add-Ons



cron