Gebrauchsanweisung für function ReadDirectories

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

Moderator: Moderatoren

erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Gebrauchsanweisung für function ReadDirectories

Beitrag 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
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Gebrauchsanweisung für function ReadDirectories

Beitrag 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
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Gebrauchsanweisung für function ReadDirectories

Beitrag 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
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Gebrauchsanweisung für function ReadDirectories

Beitrag 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
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Gebrauchsanweisung für function ReadDirectories

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