Wie HIDDEN-Datei speichern?

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Wie HIDDEN-Datei speichern?

Re: Wie HIDDEN-Datei speichern?

von balu » Mo, 21.03.2011 21:40

Hallo Stephan und Karo.

Danke für eure Antworten. :D

Ja, mir ist das auch schon vor kurzen aufgefallen, dass es Fehlermeldungen hagelte und der Sinn nicht sofort ersichtlich war. Und manchmal übersieht man den Fehler, weil nach etlichen Stunden testen und programmieren kein Unterschied mehr zu sehen ist zwischen O und 0 (Null).

Okay, um bei dem Beispiel mit storeasurl zu bleiben, ist es Egal, ob Groß oder Klein. Aber ich werd mir das so nach und nach angewöhnen solche Worte lieber Optisch zu schreiben, in der Form von storeAsUrl (oder ähnlich). Es ist dadurch leichter zu lesen. Und das ist oftmals auch sehr hilfreich.

Und ich werd es Beherzigen, das bei Modulnamen von Diensten auf die Groß/Klein geachtet werden muss.


Gruß
balu

Re: Wie HIDDEN-Datei speichern?

von Karolus » So, 20.03.2011 22:47

Hallo
Ist denn z.B. bei storeasurl auf Groß/Kleinschreibung zu achten, also in der Form von storeAsURL ?
Das ist aber eine eher rethorische Frage - weil erstens in wenigen Sekunden auszuprobieren, und zweitens beim Vergleich der nächstbesten Codesnipsel festzustellen.
Aber es gibt auch Stellen wo es auch auf genaue Gross/kleinschreibung ankommt, zb:
......createunoservice("com.sun.star.ui.dialogs.FilePicker")

Gruß Karo

Re: Wie HIDDEN-Datei speichern?

von Stephan » So, 20.03.2011 22:36

Ist denn z.B. bei storeasurl auf Groß/Kleinschreibung zu achten, also in der Form von storeAsURL?
Im Konkreten soll Dir das heute mal lieber jemand Anderes beantworten, damit ich mich nicht wieder vertue (ich denke aber G/k-Schreibung ist hier egal), generell solltest Du aber bei solchen Dingen immer die in der IDL-Referenz genannte Schreibweise benutzen da das (zumindest) das Beste ist was Du tun kannst.
Viele Dinge werden un abhängig von Groß- und KLeinschreibung funktionieren, aber in meiner beruflichen Praxis stosse ich gelegentlich immer wieder auf einige Dinge wo das, aus augenscheinlich willkührlichen Gründen, nicht so ist (ich kann momentan kein Beispiel geben).

Du wirst bei Starbasic leider immer wieder mal auf Ungereimheiten stossen (*), damit umzugehen bzw. solche Dinge nötigenfalls auch zu erahnen hat etwas mit Erfahrung zu tun und ist nicht schematisch dokumentierbar. Gerade unter Linux ist bei Starbasic noch mehr Vorsicht angebracht als unter Windows bzw. Makros die unter Windows-OOo fehlerfrei laufen tun das, in unveränderter Form, dann unter Linux-OOo nicht.

(*)
wenn ich z.B. im Verlaufe des Threads hier darauf verwies das Fehlermeldungen nicht immer das sagen was sie eigentlich meinen wäre das ein solches Beispiel, auch werden garnicht selten falsche Zeilen markiert wenn ein Laufzeitfehler auftritt beispielsweise hatte ich letzte Woche (beruflich) eine Code wo mal wieder eine Variablendeklaration als fehlend gemeldet wurde, dabei aber nicht etwa eine Zeile wo die Variable vorkam markiert war sondern eine Leerzeile


Gruß
Stephan

Re: Wie HIDDEN-Datei speichern?

von balu » So, 20.03.2011 22:17

Hallo Stephan.

Nu mal Kopf hoch. Is doch nix schlimmes passiert. :D
Obwohl ich das meiste gar nicht so richtig verstanden habe, worüber ihr Experten euch so unterhalten habt, dachte ich mir ehern: "Oh je! Was hab ich denn hier ausgelöst?"
Nun gut.

Aber eine Frage habe ich dennoch, auch wenn sie sich vielleicht lächerlich anhört.
Ist denn z.B. bei storeasurl auf Groß/Kleinschreibung zu achten, also in der Form von storeAsURL?

Gruß
balu

Re: Wie HIDDEN-Datei speichern?

von Stephan » So, 20.03.2011 21:49

Was nicht geht ist das Aufrufen einer Methode eines XStorable-Objekt OHNE die Angabe des Objekts
ja, völlig klar und trotzdem bin ich die ganze Zeit einem Irrtum erlegen.

Ich bin allgemein etwas vorsichtig und schreibe keinen Code ab sondern arbeite hier im Forum möglichst mit Copy/Paste um nichts zu verfälschen.

Obwohl ich die ganze Zeit immer im Sinne postete:

Code: Alles auswählen

oDok2 = storeasurl(url, dummy())
oDok2.storeAsURL(url, Array())
meinte ich natürlich immer:

Code: Alles auswählen

oDok2.storeasurl(url, dummy())
oDok2.storeAsURL(url, Array())
und argumentierte auch so, einzig war mir völlig entgangen was ich dort mit Copy/Paste zitierte, denn wenn mir mein Irrtum nicht schon im Code von Balu aufgefallen war hätte er das doch spätestens als ich die entsprechende Code-Zeile selbst zitierte.

Das also der Fehler von Balu von Anfang an darin bestand die Methode syntaktisch falsch zu verwenden bzw. durch die falsche Syntax eben garnicht die Methode zu verwenden sondern auf eine, nicht existierende, Funktion zu verweisen wird mir leider erst jetzt bewußt.

Mir tut es somit leid das ich hier für soviel Aufruhr gesorgt habe nur ich war leider die ganze Zeit des Glaubens es ginge um:

Code: Alles auswählen

oDok2.storeasurl(url, dummy())
obwohl es darum nie ging - ja ich selbst sogar, ohne mir dessen bewußt zu sein, die Codezeile mit "oDok2 = storeasurl(url, dummy())" zitierte.

Ist jetzt leider peinlich für mich, so ist aber die Wahrheit, ich habe die ganze Zeit ungenau hingesehen bzw. glaubte eine Codezeile zu sehen die garnicht dastand.


Gruß
Stephan

Re: Wie HIDDEN-Datei speichern?

von balu » So, 20.03.2011 21:34

Hallo Karo.

Danke für deine Rückmeldung dass es, bis auf die Fehlermeldung, auch unter Linux läuft.

Auch wenns nicht hier hin gehört, so möchte ich nur kurz Stellung dazu beziehen.
Das muss ein Problem von der 3.3.x sein, denn ich kann den Fehler hier mit einer 3.3.0-RC7 reproduzieren. Und auch bei LO
LibreOffice 3.3.0
OOO330m19 (Build:6)
tag libreoffice-3.3.0.4
tritt der gleiche Fehler auf. Und was mir in diesem Zusammenhang aufgefallen ist, dass die Datenreihen bei Kategorien statt $'01'.$JH$5:$JH$29 dies drin haben $'01'.$JH$5:$JI$29. Tja, warum das so ist, keine Ahnung.


Gruß
balu

Re: Wie HIDDEN-Datei speichern?

von Karolus » So, 20.03.2011 19:31

Hallo
Die Fehlermeldung in der Zeile

Code: Alles auswählen

odoc2 = storeto.....
dürfte ja inzwischen geklärt sein.

Ich musste beim Testen auch noch:

Code: Alles auswählen

	oDataRow = oDiagram.getDataRowProperties(16)		
	oDataRow.FillStyle = 1		
	oDataRow.FillColor = RGB(255, 149, 14)	
auskommentieren damit das durchlief. ( LO 3.3.2 RC2 Linux )

Gruß Karo

Re: Wie HIDDEN-Datei speichern?

von balu » So, 20.03.2011 14:52

Hallo liebe Mitstreiter und Helfer.

Stephan wollte eine Beispieldatei, bekommt er aber nicht. Stattdessen gibts ein Archiv in der 3 Dateien drin sind.
1.
Startdatei.ods

2.
Startdatei_Fehlermeldung.ods

3.
Monatsblatt_Graundbasis.ods

Wichtig sind die beiden Startdateien. Die Nr.1 funktioniert so wie sie soll. Und die Nr.2 liefert den von mir Eingangs zitierten Fehler. Und die Nr.3 ist die Datei die von der Nr.1 bearbeitet wird.
Das Makro in Nr. 1 & 2 ist identisch, bis auf die besagte Zeile (ganz am Ende).

Bitte beachten!
Bei den beiden Startdateien in der Zelle A1 den Pfad eingeben.
Da ich nur WinXP habe, kann ich also noch nicht garantieren ob die Dateien auch unter Linux & Co funktionieren. Über eine kurze Rückmeldung deswegen würde ich mich sehr freuen :D.

In den Startdateien sind ein paar Hinweistexte angebracht. Da das ganze noch ein Experiment ist, habe ich das momentan so gelöst. Sollte aber wohl nicht stören :wink:.


Gruß
balu
Dateianhänge
Demoversion-Forum.zip
(67.89 KiB) 57-mal heruntergeladen

Re: Wie HIDDEN-Datei speichern?

von DPunch » So, 20.03.2011 13:53

komma4 hat geschrieben:Edit: genau das sag' ich doch die ganze Zeit, DPunch :)
Natürlich, ich hatte nur gedacht, dass Stephan Dir vielleicht eher glaubt, wenn Dir noch jemand zustimmt und es nochmal neu formuliert 8)

Re: Wie HIDDEN-Datei speichern?

von komma4 » So, 20.03.2011 13:47

oder mit einer eigenen Funktion:

Code: Alles auswählen

Sub de47532_eigeneFkt

print storeAsURL( ConvertToURL( "/home/winni/Documents/daten/testdata/de47532_2.odt" ), Array() )
 
End Sub

Function storeAsURL( url, dummy )

ThisComponent.storeAsURL( ConvertToURL( "/home/winni/Documents/daten/testdata/de47532_2.odt" ), Array() )

storeAsURL = TRUE

End Function
Edit: genau das sag' ich doch die ganze Zeit, DPunch :)

Re: Wie HIDDEN-Datei speichern?

von DPunch » So, 20.03.2011 13:40

Aloha
Stephan hat geschrieben:gleichzeitig ist die LÖsung die Du vorschlägst aber ganz anders, denn sie definiert keine Funktion sondern übergibt nur einen Parameter korrrekt.
Worauf komma4 hinaus will, ist, dass die Funktion "storeasurl(parameter a, parameter b) "freistehend" schlicht nicht bekannt, weil nicht definiert ist.
Als Methode des Interfaces XStorable hingegen schon.
Der Aufruf

Code: Alles auswählen

oDok2 = storeasurl(url, dummy())
ruft eben *nicht* die durch das Interface XStorable definierte Funktion "storeAsURL" auf, sondern sucht entweder nach einer allgemeinen Basic-Funktion oder einer benutzerdefinierten Funktion mit diesem Namen.
Da stark davon auszugehen ist, dass Balu keine Funktion mit diesem Namen in seinem Code definiert hat, ist auch die Fehlermeldung absolut korrekt.

Re: Wie HIDDEN-Datei speichern?

von komma4 » So, 20.03.2011 13:39

Probiere es selbst aus:

Code: Alles auswählen

Sub de47532_richtig

Dim dummy()

oDok = ThisComponent

oDok.storeAsURL( ConvertToURL( "/home/USER/Documents/daten/testdata/de47532_2.odt" ), dummy() )

End Sub
funktioniert genauso, wie

Code: Alles auswählen

Sub de47532_richtig_2

Dim dummy()

oDok = ThisComponent

oDok.storeAsURL( ConvertToURL( "/home/USER/Documents/daten/testdata/de47532_2.odt" ), Array() )

End Sub

Was nicht geht ist das Aufrufen einer Methode eines XStorable-Objekt OHNE die Angabe des Objekts


oDok2 nimmt hier den Rückgabewert der Aktion auf: Variable ist EMPTY

Code: Alles auswählen

Sub de47532_richtig_3

Dim dummy()

oDok = ThisComponent

oDok2 = oDok.storeAsURL( ConvertToURL( "/home/USER/Documents/daten/testdata/de47532_2.odt" ), Array() )
xray oDok2
End Sub

Re: Wie HIDDEN-Datei speichern?

von Stephan » So, 20.03.2011 13:28

Das verstehst Du IMHO falsch.
mmh
storeAsURL existiert als Methode des Objekts oDok2, aber nicht als eigenständige Funktion im BASIC-Kontext.
ganz genauso sehe ich das auch und trotzdem sagst Du das die Fehlermeldung die Balu bekam darauf zurückgeht das eine Funktion nicht definiert ist, denn Du schriebst:
Hier wird eine SUB/FUNCTION gefunden,

storeasurl(url, dummy())

die eben nicht definiert ist.
gleichzeitig ist die LÖsung die Du vorschlägst aber ganz anders, denn sie definiert keine Funktion sondern übergibt nur einen Parameter korrrekt.

UNd genau das ist das was ich die ganze Zeit sage, denn die FEhlermeldung ist eben nicht "eindeutig" oder richtig sondern die Aussage in der FEhlermeldung ist einfach irreführend und falsch.


Es geht, meiner Meinung nach, von Anfang an nur um einen falsch übergebenen Parameter, genauer gesagt erwartet die Methode ein (PropertyValue-)Array und dummy() ist erst dann ein array wenn es so deklariert wurde oder man arbeitet direkt mit Array().
ES ist einfach so das eine Parameterübergabe mit "dummy()" nicht schon wegen der Klammern als Array gewertet wird sondern das Dummy vorher mit Dim dummy() (oder Global ... oder Public...) explizit deklariert werden muß (oder ggf. tatsächlichen Array-iNhalt, durch Zuweisung haben muß, was aber hier nicht der zu betrachtende Fall ist).



Gruß
Stephan

Re: Wie HIDDEN-Datei speichern?

von Stephan » So, 20.03.2011 13:15

Jetzt verständlicher, oder bedarf es einer Beispieldatei?
Der Code scheint mir eindeutig und klar, trotzdem:
Wenn Du eine Beispieldatei hast, die sowohl das Funktionieren als auch das Nichtfunktionieren demonstriert, wäre das gut, denn ich will verstehen woran das Ganze liegt, im Moment verstehe ich es so wie ich es bereits geschrieben hatte und eigentlich reden wir hier über ganz simple Dinge so das es mich verunsichert hier möglicherweise meinerseits einem Mißverständnis zu erliegen und Falsches anzunehmen.

Mein Problem bleibt, denn wenn komma4 schreibt:
Hier wird eine SUB/FUNCTION gefunden,

storeasurl(url, dummy())

die eben nicht definiert ist.
stimmt das einfach nicht bzw. ich verstehe es sonst nicht.

Die Lösung von komma4 definiert ja eben gerade die Funktion nicht sondern übergibt nur einen brauchbaren Parameter, also kann es doch garnicht an fehlender Deklaration liegen wie behauptet wird.

Meine Meinung ist jedenfalls:

die Fehlermeldung ist irreführend, weil sie eine fehlende Funktiondeklaration bemängelt, aber eigentlich sagen müßte das ein Parameter nicht richtig übergeben wird bzw. inhaltlich fehlt und Letzteres ist bereits der gesamte Fehler.


Anscheinsbeleg:
obwohl der Unterschied zwischen:

Code: Alles auswählen

oDok2 = storeasurl(url, dummy())
und:

Code: Alles auswählen

oDok2.storeAsURL( url, Array() )
eben nicht darin besteht das die Funktion "storeAsURL" im zweiten code irgendwo definiert/deklariert wurde, sondern nur ein Parameter korrekt angegeben wurde, funktioniert es, ergo kann es an fehlender Definition/DEklaration nicht gelegen haben sondern einzig am Parameter.

Statt:

Code: Alles auswählen

oDok2.storeAsURL( url, Array() )
sollte genausogut:

Code: Alles auswählen

Dim dummy()
oDok2 = storeasurl(url, dummy())
funktionieren und mithin sollte es auch funktionieren, wenn dummy() irgendwo deklariert ist, Hauptsache die Deklarition ist zum Zeitpunkt der Verwendung noch gültig, was beispielsweise bei DEinem geposteten Code so ist.

Beispielsweise in der StarBasic-FAQ befindet sich ein entsprechender Code:
http://www.dannenhoefer.de/faqstarbasic ... hern..html

Code: Alles auswählen

Sub Speichern 
dim dummy()   
datei="c:\test2.sxw"   
dateiurl=converttourl(datei)   
odoc=thisComponent   
odoc.storeasurl(dateiurl,dummy())

rem oder
rem    odoc.storetourl(dateiurl,dummy())

End Sub
der inhaltlich so ist wie der Code von dem Du sagst das er bei Dir nicht funktioniert.


Gruß
Stephan

Re: Wie HIDDEN-Datei speichern?

von komma4 » So, 20.03.2011 12:51

Stephan hat geschrieben:braucht sie doch auch nicht weil sie ohnehin existiert, Du selbst hast darauf verwiesen.
Das verstehst Du IMHO falsch.

storeAsURL existiert als Methode des Objekts oDok2, aber nicht als eigenständige Funktion im BASIC-Kontext.

Nach oben