🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Datenbank/Makro unter Linux und Windows verwenden.

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Gundo
Beiträge: 53
Registriert: So 1. Jul 2012, 10:23

Datenbank/Makro unter Linux und Windows verwenden.

Beitrag von Gundo » Do 2. Mär 2017, 11:33

Hallo,

Ich verwende unter Linux-Mint 18.1 "LibreOffice 5.1.6.2" folgendes Script.

Code: Alles auswählen

SUB Link_oeffnen_1
    DIM oDoc AS OBJECT
    DIM oDrawpage AS OBJECT
    DIM oForm AS OBJECT
    DIM oFeld AS OBJECT
    DIM oShell AS OBJECT
    DIM stFeld AS STRING
    oDoc = thisComponent
    oDrawpage = oDoc.Drawpage
    oForm = oDrawpage.Forms.getByName("MainForm")
    oFeld = oForm.getByName("play 1")
    stFeld = oFeld.Text
    IF stFeld = "" THEN
    EXIT SUB
    END IF
    stFeld = convertToUrl(stFeld)
    shell("/usr/bin/mpg321", 1,stFeld)
END SUB
Im Feld "play 1" stehen relativer Pfad und Dateiname zur einer MP3-Datei.

Beispiel: "101-200/110_1.mp3".

Das Programm "mpg321" spielt also die Audiodatei ab. Funktioniert wunderbar, aber nur unter Linux.
Da sich die Pfadstruktur von Linux und Windows 7 ja unterscheiden, funktioniert logischerweise das Scrip nicht unter Windows 7 + Base.

Wie kann man es lösen das im Script automatisch festgestellt wird, ob unter Linux oder Windows gearbeitet wird, und ggf die Pfade
angepaßt werden ?

Ich stelle mir das so vor:
1. Wenn Linux verwendet wird nehme: shell("/usr/bin/mpg321", 1,stFeld)

2. Wenn Windows verwendet wird nehme: shell("c:\Programme\Player\cmdmp3.exe", 1,stFeld)
3. Tausche im "stFeld" "/" gegen "\" aus, und ergänze "D:\Dokumente\".

So das aus "101-200/110_1.mp3" => "D:\Dokumente\101-200\110_1.mp3" wird.

Kann mir da jemand weiterhelfen ?

Gruß Gundo

Benutzeravatar
lorbass
* LO-Experte *
Beiträge: 627
Registriert: Mo 25. Apr 2011, 18:17

Re: Datenbank/Makro unter Linux und Windows verwenden.

Beitrag von lorbass » Do 2. Mär 2017, 17:32

Gundo hat geschrieben:Wie kann man es lösen das im Script automatisch festgestellt wird, ob unter Linux oder Windows gearbeitet wird
Du kennst offenbar Michael Dannenhöfers StarBasic / OpenOffice.org Basic FAQ noch nicht. Dort findest du auch die Antwort zu deiner Frage Wie kann man das verwendete Betriebssystem auslesen?

Gruß
lorbass

musikai
Beiträge: 263
Registriert: Do 14. Mai 2015, 17:53

Re: Datenbank/Makro unter Linux und Windows verwenden.

Beitrag von musikai » Do 2. Mär 2017, 18:46

Ich verwende das hier (,das auch OSX erkennt):

Code: Alles auswählen

function getOS() AS String
   select case getGUIType
      case 1: getOS="WINDOWS"
      case 3: getOS="MAC"
      case 4: getOS=iif(instr(environ("PATH"),"/usr/local/bin")=0,"OSX","UNIX")
   end select
end function
Ansonsten kannst Du Windows von Linux auch einfach mit dem GetPathSeparator() unterscheiden, der unter Windows "\" zurückgibt und unter Linux "/".
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html

Gundo
Beiträge: 53
Registriert: So 1. Jul 2012, 10:23

Re: Datenbank/Makro unter Linux und Windows verwenden.

Beitrag von Gundo » So 5. Mär 2017, 15:04

Danke für die Tipps. Ich hab es so gelöst:

Code: Alles auswählen

UB Link_oeffnen
	DIM oDoc AS OBJECT
	DIM oDrawpage AS OBJECT
	DIM oForm AS OBJECT
	DIM oFeld AS OBJECT
	DIM oShell AS OBJECT
	DIM stFeld AS STRING
	DIM oDatenquelle As Object
	DIM sPath As String
	DIM sPath_relativ As String
	oDoc = thisComponent
	oDrawpage = oDoc.Drawpage
	oForm = oDrawpage.Forms.getByName("MainForm")
	oFeld = oForm.getByName("play 1")
	stFeld = oFeld.Text
	IF stFeld = "" THEN
	EXIT SUB
	END IF
	GlobalScope.BasicLibraries.LoadLibrary("Tools")
	oDatenquelle = ThisDatabaseDocument.DataSource   
	sPath = ConvertFromUrl(oDatenquelle.Name)
	sPath = DirectoryNameoutofPath(sPath, GetPathSeparator())
	sPath_relativ = sPath + GetPathSeparator() + GetPathSeparator() + stFeld
	OS = GetGUIType()
	IF OS = 4 then shell("/usr/bin/mpg321", 1,sPath_relativ)
	IF OS = 1 then shell("c:\Program Files\cmdmpg\cmdmp3.exe", 1,sPath_relativ)
	END SUB
Vielleicht nicht perfekt, aber es funktioniert. Bin ja kein Programmierer.

Gruß Gundo


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten