Seite 1 von 1

Gebrauchsanweisung für function ReadDirectories

Verfasst: Mi, 12.11.2014 18:14
von erikafuchs
Hallo Leute,
könnt ihr mir bitte mit der Funktion "ReadDirectories" aus der Makrobiblithek "Tools" helfen?
ich möchte alle Dateien in einem Ordner auf einen Rutsch ändern.
Dazu lege ich zunächst per MKDir einen Unterordner an, lese alle Dateien des Ordners nacheinander ein, ändere sie uns speichere sie im Unterordner. Soweit klappt das. Jetzt habe ich aber festgestellt, dass das Makro nach der "ersten Runde" wohl auch alle Dateine im Unterordner nochmals einliest, ändert und wiederum abspeichert. Leider erschließen sich mir die übergebenen Parameter der Funktion (ReadDirectories (Pfad , TRUE , FALSE , FALSE ) ) nicht und ich finde auch keine, für mich, verständliche Beschreibung davon. Hat da jemand was? Ich hänge auch mal einen Ausschnitt meines Codes hier an:

Code: Alles auswählen

sub update
	globalScope.BasicLibraries.loadLibrary( "Tools" )
	Dim aDateien() as string
	Dim Arg(1) as new com.sun.star.beans.PropertyValue

	speicherDialog = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker")
  	With speicherDialog
		.setTitle("Wo sind die Schülerdateien?")
	End With	
	speicherDialog.execute()
	pfad = speicherDialog.getDirectory()

	aDateien = ReadDirectories (Pfad , TRUE , FALSE , FALSE )  
	MKDir(pfad & "/update_" & version)			

	If uBound( aDateien ) > -1 then
		for i = lBound( aDateien) to uBound(aDateien)
			FileName=aDateien(i)
	
				sname = ConvertFromURL(FileName)
				do
					sname =  right(sname,len(sname)-InStr(sname, "\"))
				loop while InStr(sname, "\")>0
				info=info & sname & chr(10)
					
				sURL=ConvertToURL(aDateien(i))
		            
	            tDoc=StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Arg())
	            tSheet=tDoc.sheets.getByIndex(0) 
	            tSheet.isvisible=false

	            dSheet.getCellByPosition(8,0).value=tSheet.getCellByPosition(8,0).value 
Anmerkung: 'Im Original wird hier natürlich mehr übernommen und auch geändert
									
				tDoc.close(true)
				dateiname=ConvertToURL(pfad & "/update_" & version & "/" & sname)
				ThisComponent.storeToURL(dateiname, arg())
			end if	
		next
	end if	
end sub
Vielen Dank
Pit

Re: Gebrauchsanweisung für function ReadDirectories

Verfasst: Mi, 12.11.2014 19:14
von Karolus
Hallo

Dann kuck dir mal einfach die Funktionssignatur an von ...Tools/UCB/ReadDirectories(...) an, möglichweise kommst du dann dahinter wieso da Ding recursive arbeitet mit deinem Aufruf.

Karolus

Re: Gebrauchsanweisung für function ReadDirectories

Verfasst: Mi, 12.11.2014 20:03
von erikafuchs
Lieber Carolus,
ich habe es jetzt halt einfach mal ausprobiert und das "True" auf "False" gesetzt und es funktioniert. Danke soweit.
Ich muss aber zugeben, dass meine Programmierfähigkeiten nicht ausreichen um das Makro zu analysieren und eine Beschreibung davon habe ich auch nicht auf Englisch gefunden. Ich hätte halt gerne gewusst was die übergebenen Parametre bewirken. So habe ich es halt nur ausprobiert.
Dass auch so ein Aufruf unter rekursiv läuft war mir nicht klar (Das Stichwort habe ich sogar bemerkt). Ich ging davon aus, dass das Array des Ordnerinhalts nur einmal eingelesen und durch das "Füllen" des Unterordners nicht mehr geändert wird.
Pit

Re: Gebrauchsanweisung für function ReadDirectories

Verfasst: Mi, 12.11.2014 20:53
von Karolus
Hallo

Ich hab das Ding auch nicht vollständig analysiert (das tu ich mir nicht an), aber in der Signatur steht als 2. Argument bRecursive as Boolean das ist doch deutlich genug - oder weisst du nicht mal was True und False bedeutet?

Karolus

Re: Gebrauchsanweisung für function ReadDirectories

Verfasst: Mi, 12.11.2014 23:00
von erikafuchs
Lieber Carolus,
in der Signatur steht als 2. Argument bRecursive as Boolean das ist doch deutlich genug - oder weisst du nicht mal was True und False bedeutet?
doch, ich zitiere:
ich habe es jetzt halt einfach mal ausprobiert und das "True" auf "False" gesetzt und es funktioniert.
Und:
Ich hab das Ding auch nicht vollständig analysiert
freut mich zu hören, ich dachte nur ich könnte das nicht.
Grüße
Pit