[gelöst] File-Existenz checken - im gleichen Pfad

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
red2sign
**
Beiträge: 47
Registriert: Mo, 28.07.2008 13:53

[gelöst] File-Existenz checken - im gleichen Pfad

Beitrag 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:

Code: Alles auswählen

If FileExists("D:\inifile.ini") then
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 =)
Zuletzt geändert von red2sign am Fr, 08.08.2008 15:26, insgesamt 1-mal geändert.
red2sign verwendet WinXP Prof. und OO3 [Developers Snapshot (BEB300m3) Build: 9328]
RaKa
*
Beiträge: 12
Registriert: Di, 05.08.2008 18:50

Re: File-Existenz checken - im gleichen Pfad

Beitrag 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
Benutzeravatar
red2sign
**
Beiträge: 47
Registriert: Mo, 28.07.2008 13:53

Re: File-Existenz checken - im gleichen Pfad

Beitrag 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!
red2sign verwendet WinXP Prof. und OO3 [Developers Snapshot (BEB300m3) Build: 9328]
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: File-Existenz checken - im gleichen Pfad

Beitrag 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
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: File-Existenz checken - im gleichen Pfad

Beitrag 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
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: File-Existenz checken - im gleichen Pfad

Beitrag von turtle47 »

Hallo Michael,
ykcim hat geschrieben:Bist Du sicher das der Pfad richtig erkannt wird.
Ja, bin ich mir:
Find_File_Path.jpg
Find_File_Path.jpg (45.26 KiB) 2023 mal betrachtet
Also ich benutze OOo-Dev_DEV300_m3(9284).

Schöne Grüsse.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Benutzeravatar
red2sign
**
Beiträge: 47
Registriert: Mo, 28.07.2008 13:53

Re: File-Existenz checken - im gleichen Pfad

Beitrag 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
red2sign verwendet WinXP Prof. und OO3 [Developers Snapshot (BEB300m3) Build: 9328]
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: File-Existenz checken - im gleichen Pfad

Beitrag 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
Benutzeravatar
red2sign
**
Beiträge: 47
Registriert: Mo, 28.07.2008 13:53

Re: File-Existenz checken - im gleichen Pfad

Beitrag 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?
red2sign verwendet WinXP Prof. und OO3 [Developers Snapshot (BEB300m3) Build: 9328]
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: File-Existenz checken - im gleichen Pfad

Beitrag 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
Benutzeravatar
red2sign
**
Beiträge: 47
Registriert: Mo, 28.07.2008 13:53

Re: File-Existenz checken - im gleichen Pfad

Beitrag 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 :)
red2sign verwendet WinXP Prof. und OO3 [Developers Snapshot (BEB300m3) Build: 9328]
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: File-Existenz checken - im gleichen Pfad

Beitrag 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
RaKa
*
Beiträge: 12
Registriert: Di, 05.08.2008 18:50

Re: File-Existenz checken - im gleichen Pfad

Beitrag 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 ..... :lol:


Grüße und schönes WE,

Ralf
Benutzeravatar
red2sign
**
Beiträge: 47
Registriert: Mo, 28.07.2008 13:53

Re: File-Existenz checken - im gleichen Pfad

Beitrag 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!
red2sign verwendet WinXP Prof. und OO3 [Developers Snapshot (BEB300m3) Build: 9328]
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: [gelöst] File-Existenz checken - im gleichen Pfad

Beitrag 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
Antworten