Seite 1 von 1
[gelöst] File-Existenz checken - im gleichen Pfad
Verfasst: Di, 05.08.2008 08:49
von red2sign
Guten Morgen Leser,
ich will eine IF-Schleife coden, die kontrolliert, ob im gleichen Verzeichnis in dem das aktuelle Dokument liegt, eine bestimmte Datei xy.ini existiert.
Dafür gibts ja den Code:
Dabei wird aber der aktuelle Pfad eingegeben, was vermeiden werden soll.
Es soll immer im aktuellen Dokumentenverzeichnis gesucht werden.
Gibts da nen Baustein?
Grüße =)
Re: File-Existenz checken - im gleichen Pfad
Verfasst: Di, 05.08.2008 19:12
von RaKa
Hallo!
So habe ich es mal gemacht:
Code: Alles auswählen
Dim sFile as String
GlobalScope.BasicLibraries.LoadLibrary("Tools") ' für die Stringbearbeitung
sFile = DirectoryNameoutofPath(thisComponent.getUrl(),"/") & "/inifile.ini"
If fileExists (sFile) Then
.............
else
...........
end if
Sollte funktionieren, habe es aber nicht extra getestet.
Grüße Ralf
Re: File-Existenz checken - im gleichen Pfad
Verfasst: Fr, 08.08.2008 09:34
von red2sign
Hi Ralf
Habe die OO-Version 3. Und da scheint die Funktion DirectoryNameoutofPath nicht mehr zu funktionieren.
ConvertToUrl wäre ne Alternative, jedoch konventiert dies ja nur die URL und holt nicht den Pfad.
Hast du mal von ner anderen Möglichkeit gehört?
Grüße!
Re: File-Existenz checken - im gleichen Pfad
Verfasst: Fr, 08.08.2008 10:14
von turtle47
Hi red2sign,
red2sign hat geschrieben:Habe die OO-Version 3. Und da scheint die Funktion DirectoryNameoutofPath nicht mehr zu funktionieren.
Warum sollte das unter 3.0 Beta nicht mehr funktionieren? Habe es gerade mal mit 3.0 Beta getestet und der Pfad wurde richtig erkannt.
Code: Alles auswählen
Sub Find_File_Path
Dim sFile as String
GlobalScope.BasicLibraries.LoadLibrary("Tools")' für die Stringbearbeitung
sFile = DirectoryNameoutofPath(thisComponent.getUrl(),"/") & "/inifile.ini"
msgbox sFile
End Sub
Es funktioniert nur dann nicht, wenn das Dokument aus dem man das Makro aufruft noch keinen Namen hat, also noch nicht unter einem Namen abgespeichert ist!
Jürgen
Re: File-Existenz checken - im gleichen Pfad
Verfasst: Fr, 08.08.2008 12:34
von ykcim
Bist Du sicher das der Pfad richtig erkannt wird. Bei mir steht in OO3 beim Aufruf von Deinem Makro:
file:///C:/test/test.odt/inifile.ini
richtig wäre
file:///C:/test/inifile.ini
Der Pfad wurde also nicht ausgelesen. Der Dateiname ist noch angehängt.
Ich verwende OO3 BEB300m3 Build 9328
mfg
Michael
Re: File-Existenz checken - im gleichen Pfad
Verfasst: Fr, 08.08.2008 12:54
von turtle47
Hallo Michael,
ykcim hat geschrieben:Bist Du sicher das der Pfad richtig erkannt wird.
Ja, bin ich mir:

- Find_File_Path.jpg (45.26 KiB) 2141 mal betrachtet
Also ich benutze OOo-Dev_DEV300_m3(9284).
Schöne Grüsse.
Jürgen
Re: File-Existenz checken - im gleichen Pfad
Verfasst: Fr, 08.08.2008 13:19
von red2sign
Ganz genau, das wird bei mir auch nicht abgeschnitten.
Hab schon alles mögliche probiert mit den Slashs usw. ....
Ich verwende auch OO3 BEB300m3 Build 9328.
ykcim hat geschrieben:Bist Du sicher das der Pfad richtig erkannt wird. Bei mir steht in OO3 beim Aufruf von Deinem Makro:
file:///C:/test/test.odt/inifile.ini
richtig wäre
file:///C:/test/inifile.ini
Der Pfad wurde also nicht ausgelesen. Der Dateiname ist noch angehängt.
Ich verwende OO3 BEB300m3 Build 9328
mfg
Michael
Re: File-Existenz checken - im gleichen Pfad
Verfasst: Fr, 08.08.2008 13:48
von Stephan
Hab schon alles mögliche probiert mit den Slashs usw. ....
dann wäre es gut zu erfahren was Du getan hast denn möglicherweise liegt ja tatsächlich ein Fehler in 3.0 vor.
Ich habe hier derzeitig leider nur 3.0 Beta1 (und nicht die aktuelleste Version) und kann dort weder beim Zusammensetzen des Pfades mittels einfacher Stringmanipulation noch mittels der SPLIT-Funktion Unregelmäßigkeiten feststellen - aber, wie gesagt das gilt nur für Beta1.
Gruß
Stephan
Re: File-Existenz checken - im gleichen Pfad
Verfasst: Fr, 08.08.2008 13:53
von red2sign
zB mal das
thisComponent.getUrl() vorher in eine Variable gespeichert, den Code geparst mit
ConvertFromUrl() und dann erst das
DirectoryNameoutofPath() ausgeführt. Aber ohne Erfolg.
Weitere spielreien mit dem parsen und umgekehrten Slashes habe ich leider schon wieder gelöscht. Waren ja auch ohne Erfolg.
Code: Alles auswählen
Dim sFile as String
Dim sFile2 as String
Dim sFile3 as String
sFile = thisComponent.getUrl()
msgbox sFile, 0, "sFile - thisComponent"
sFile2 = ConvertFromUrl(sFile)
msgbox sFile2, 0, "sFile2 - ConvertFromUrl"
GlobalScope.BasicLibraries.LoadLibrary("Tools")' für die Stringbearbeitung
sFile3 = DirectoryNameoutofPath(sFile2,"\") & "\inifile.ini"
msgbox sFile3, 0, "Gekürzter Pfad mit inifile.ini"
Habe auch mal getestet, ob eventuell der
Tools-Import fehlschlägt, aber der klappt.
Weiß jmd., wann die 3. Beta rauskommt?
Re: File-Existenz checken - im gleichen Pfad
Verfasst: Fr, 08.08.2008 14:27
von Stephan
zB mal das thisComponent.getUrl() vorher in eine Variable gespeichert, den Code geparst mit ConvertFromUrl() und dann erst das DirectoryNameoutofPath() ausgeführt. Aber ohne Erfolg.
und wozu soll das alles gut sein - es war doch inzwischen klar das irgenein Problem mit DirectoryNameoutofPath existiert, auch wenn noch nicht feststeht welches, also brauchst Du doch nicht anzuführen Du hättest 'alles mögliche getan' wenn sich das auf Nachfrage dann darauf beschränkt nur zu erfahren was wir ohnehin schon wußten ...
(Sorry, nur ich gehe dann schon davon aus das jeder die eine Minute Zeit hat um sich den Inhalt von DirectoryNameoutofPath anzusehen ...)
Warum sagst Du nichts dazu, bzw. hast es nicht als Erstes ausprobiert, wie das Ganze mit eifacher Stringmanipulation läuft:
Code: Alles auswählen
x = ThisComponent.URL
i=0
Do
i=i+1
x1 = RIGHT(x,i)
Loop While LEFT(x1,1)<>"/"
tmp = LEFT(x, LEN(x)-i) & "/inifile.ini"
Msgbox tmp
oder meinethalben mittels SPLIT-Funktion:
Code: Alles auswählen
x = ThisComponent.URL
x1 = SPLIT(x,"/")
For i = 0 To UBOUND(x1())-1
tmp = tmp & x1(i) & "/"
Next i
tmp = tmp & "inifile.ini"
Msgbox tmp
Beides scheint mir ohnehin verläßlicher als auf DirectoryNameoutofPath zurückzugreifen, was stets eine potentielle zusätzliche FEhlerquelle darstellt.
Gruß
Stephan
Re: File-Existenz checken - im gleichen Pfad
Verfasst: Fr, 08.08.2008 14:33
von red2sign
.... ich arbeite mit OO und OOo-Basic jetzt knappe 10 Tage. Sorry dass ich noch nicht alle Kniffe draußen habe ....
-------------------------------------------------------------------------------------------------------------------------------------------------------
Habe soeben eine Antwort von OO bekommen. Ging echt flott!
Ich bin (...) vor einigen Tagen selbst über das Problem gestolpert. Insofern kann ich sagen - ja, das Problem existiert in der Beta2.
Allerdings habe ich gerade versucht, das Problem in einem aktuelleren Build nachzustellen (OOO300_m1 snapshot - die Vorbereitung zum ersten ReleaseCandidate für OOo 3.0). Dort funktioniert die Funktion wieder korrekt.
Sehr schön

Re: File-Existenz checken - im gleichen Pfad
Verfasst: Fr, 08.08.2008 15:14
von Stephan
.... ich arbeite mit OO und OOo-Basic jetzt knappe 10 Tage. Sorry dass ich noch nicht alle Kniffe draußen habe ....
Ich sehe kein Problem darin Anfänger zu sein, das war ich nämlich auch mal.
Ich frage mich nur wo das Problem liegt ganz einfach nachzufragen wenn Du etwas nicht verstehst, denn ich sprach bereits in meinem vorletzten post von "Stringmanipulation" und "Split-Funktion" - warum also nicht die Frage "Was ist das?" oder "Meinst Du damit ... ?" statt Zuflucht in 'alles Mögliche' zu nehmen.
Habe soeben eine Antwort von OO bekommen. Ging echt flott!
Ich bin (...) vor einigen Tagen selbst über das Problem gestolpert. Insofern kann ich sagen - ja, das Problem existiert in der Beta2.
Prima, das sagte Dir einer der Experten für StarBasic hier im Thread bereits um 12:34 ...
Gruß
Stephan
Re: File-Existenz checken - im gleichen Pfad
Verfasst: Fr, 08.08.2008 15:16
von RaKa
.
Das Bestätigt mal wieder:
Beta != Produktivsystem
Aber man möchte ja immer mit der neuesten Version arbeiten - bin da selber nicht anders .....
Grüße und schönes WE,
Ralf
Re: File-Existenz checken - im gleichen Pfad
Verfasst: Fr, 08.08.2008 15:24
von red2sign
- Ja, die 3er Version is halt Vorgabe. Darum heißt sie ja Beta, dessen bin ich mir bewusst

- Wenn eine Funktion bei zwei Usern nicht geht, ist das für mich kein "offizieller" Bug.
- Sorry, deiner Antwort konnte ich nicht entnehmen, dass ich ne Stringmanipulation machen sollte. Für mich war das eine Info, dass dat Dingen bei dir läuft.
- Abschließend kann man also sagen: Offizieller Bug, beim ersten Release wird er weg sein. Danke den Mithelfern hier für die Feststellung / Lösung des Problemes!
Re: [gelöst] File-Existenz checken - im gleichen Pfad
Verfasst: Fr, 08.08.2008 15:35
von Stephan
Wenn eine Funktion bei zwei Usern nicht geht, ist das für mich kein "offizieller" Bug.
Mir ist jetzt der Zusammenhang unklar - oder wolltest Du nur eine Lösung DEines Problems wenn es ein offitzieller Bug ist (und z.B. kein Makrofehler DEinerseits).
Wie auch immer:
Wo ist denn in DEinen Ausführungen die Rede von "offiziell", dort ist nur die REde von 'oo' hätte Dir geantwortet und ich vermutete also es wird eine Person von de.ooo gewesen sein. Das bin ich auch - kontaktiere mich jederzeit gerne 'offizell' unter meiner Email-Adresse bei OOo (die ich Dir gerne per persönlicher Nachricht über da Forum zusende, so Bedarf besteht) ... es ändert nur alles nichts an der Tatsache das Michael (den ich mit der Andeutung 12:34 meinte) mehr als 90% aller OOo-Offiziellen in die Tasche steckt wenn es um Makros geht.
Schwelge also gerne weiter in Deinen offiziell-Hirarchie-Betrachtungen, ich orientiere mich lieber an Kompetenz und die hat Michael ganz sicher.
Gruß
Stephan