Makrók, funkciók leírása. Fájl megnyitása makróval

Makró készítés, parancsfájl írás és az API használata

Makrók, funkciók leírása. Fájl megnyitása makróval

HozzászólásSzerző: Zizi64 » 2017. április 4., kedd 7:16

Egy levelezőlistán kapott kérdés:

Már évekkel ezelőtt regisztráltam. A kérdésem meg igen rövid: makrók,
funkciók leírása. Pl.: fájl megnyitása pufferelve, direktben,
append-elve stb. Hol lehet erről dokumentációt találni? De ne a súgót
mond, mert az nem sokat ér.


Nos, a kérdés így nehezen megválaszolható. Egyrészt, mert a "pufferelve, direktben, append" kitétel a számomra úgy hangzik, mintha valami egyszerű szerkezetű .txt, vagy .csv fájlt akarnál megnyitni szerkesztésre a Calc programból, de nem az AOO/LO képességeit felhasználva szeretnél beleírni valamit, hanem valami egyszerű "WriteLn" paranccsal, vagy valami hasonlóval.

Persze lehet, hogy félreértettem a kérdésedet.
A Calcból (és más applikációból is) a loadComponentFromURL függvénnyel lehet szerkesztésre megnyitni ODF (vagy egyéb típusú) dokumentumfájlokat:

Új, üres fájl megnyitása példa:
Kód: Egész kijelölése   KinyitásÖsszecsukás
   Args(0).Name = "Hidden"
   Args(0).Value = False
   Args(1).Name = "MacroExecutionMode"
   Args(1).Value = 4
   oCalcDoc = StarDesktop.loadComponentFromURL("private:factory/scalc", "_Blank", 0, Args)


Jelszóval védett fájl megnyitása példa (a saját makrókönyvtáramból másolom a példát, itt más nevet adtam a paraméter változónak, illetve a FILE_URL változónak kell tartalmaznia a szabványos URL formátumban megadott URL-t. Ha Windows környezetben a "\" jeles elérési útvonal áll rendelkezésre, akkor a ConvertToURL() függvénnyel tudod könnyedén szabványos URL-lé konvertálni. Ez a függvény a Tools könyvtárból érhető el, amit külön be kell tölteni - ha még nem történt meg:

Kód: Egész kijelölése   KinyitásÖsszecsukás
   
If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then
        GlobalScope.BasicLibraries.LoadLibrary("Tools")
End If

FILE_URL=converttourl(PathString + "Fájlneve.ots")

OpenProperties(0).Name = "Password"
OpenProperties(0).Value = "Az_én_jelszavam"
oCalcDoc = StarDesktop.loadComponentFromURL(FILE_URL, "_blank", 0, OpenProperties())



Mindezekre legátfogóbb leírás és mintapéldák Andrew Pitonyak makró tárgyú könyveiben vannak, amit innen érhetsz el:
http://www.pitonyak.org/oo.php

A StarBasic programozás alapjai:
https://help.libreoffice.org/Basic/Orga ... Modules/hu
http://libreoffice.hu/2015/02/21/beveze ... -segedlet/

Az API függvények használata:
https://wiki.openoffice.org/wiki/HU/Doc ... /API_Intro

És az API függvények listája:
http://api.libreoffice.org/examples/examples.html
http://api.libreoffice.org/
http://www.openoffice.org/api/
Sok sikert!
Kovács Tibor (Win7x64Prof; W10x64prof; XPprofSP3: LO4.4.7; és a Hordozható AOO4.1.3, LO3.3.1-LO5.3.3)
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 2941
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Makrók, funkciók leírása. Fájl megnyitása makróval

HozzászólásSzerző: Zizi64 » 2017. április 4., kedd 7:30

Az objektumok programozás közbeni vizsgálatához (ha nem tudod, hogy milyen tulajdonságokkal, metódusokkal (stb...) rendelkeznek) célszerű feltelepítani valamelyik Objektum vizsgáló segédalkalmazást:

MRI
https://forum.openoffice.org/en/forum/v ... 74&t=49294

XrayTool:
https://forum.openoffice.org/en/forum/v ... 20&t=54217

Én LibreOffice-hoz az XrayTool-t használom: nagyon-nagyon hasznos! A linkről letölthető Writer dokumentum tartalmazza a kódot, és van a szöveg között egy Install gomb ha megnyomod (és persze ha a dokumentumból futó makrók engedélyezve vannak még a dokumentum megnyitása előtt), akkor feltelepül egy új makrókönyvtár (az IDE-n belül meg fogod találni).
Használata:
Ha a kódod sorai között bárhol kiadsz egy
Kód: Egész kijelölése   KinyitásÖsszecsukás
xray az_objektum_neve

Utasítást, egy felugró ablakban kilistázza annak az összes programból elérhető tulajdonságát, metódusát, stb.
Természetesen ehhez az Xray-nak is betöltve kell lennie, ezt ugyanúgy teheted meg, mint a Tools könyvtár esetében:
Kód: Egész kijelölése   KinyitásÖsszecsukás
   If (Not GlobalScope.BasicLibraries.isLibraryLoaded("XrayTool")) Then
        GlobalScope.BasicLibraries.LoadLibrary("XrayTool")
    End If

Vagy pedig manuálisan is betölthető az IDE felületén a bal oldali könyvtár listában az XRAY könyvtárra kattintással: "besárgítható" (ami a betöltött állapotot jelenti)
Sok sikert!
Kovács Tibor (Win7x64Prof; W10x64prof; XPprofSP3: LO4.4.7; és a Hordozható AOO4.1.3, LO3.3.1-LO5.3.3)
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 2941
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Makrók, funkciók leírása. Fájl megnyitása makróval

HozzászólásSzerző: janu » 2017. április 4., kedd 7:33

Köszönöm szépen a választ, elég „kimerítő” ;) (úgy értem, alapos)
A probléma a következő: adva van egy szöveges fájl, amit egy nem éppen friss alkalmazás gyárt le (2003-ban upgrade-elték utoljára). A szerkezete ismert, vesszővel elválasztott mezők vannak benne. Ezt kell egy meghatározott formába beilleszteni - nagyjából úgy képzelhető el, hogy az első két mező egy referencia, amiből szerkeszthető, hogy a táblázat melyik cellájába (celláiba) emelhető be az adat. Ez után az 1.0-ás user belepancsol (ezt már elég jól tudják), majd egy másik makróval ugyanezt a formátumú állományt állítjuk elő, mert az alkalmazás ezt tudja fogadni.

A direkt és pufferelt kezelés inkább csak élvezkedés a részemről, már akkor is célba érek, ha az overwrite, append, illetve a !overwrite megoldható.

Ezt csak az érthetőség kedvéért írtam le, mert most már egy nyomon el tudok indulni. Ha megakadok, nem menekültök tőlem :D
[img size=200]http://linuxcounter.net/cert/46079.png[/img]
http://www.janu.hu
http://pclos.janu.hu
janu
 
Hozzászólások: 2
Csatlakozott: 2008. március 6., csütörtök 12:11
Tartózkodási hely: Budapest

Re: Makrók, funkciók leírása. Fájl megnyitása makróval

HozzászólásSzerző: Zizi64 » 2017. április 4., kedd 7:46

Nehezen tudom elképzelni a feladatot mintafájlok nélkül.
Kellene egy eredeti (.csv, .txt) szöveges fájl. Nem kell, hogy éles, esetleg titkos adatokat tartalmazzon, csak az adatok formája és szerkezete egyezzen azzal, amit használtok. És kellene egy olyan .ods fájl, ami a szerkesztési megjelenést (az import utáni állapotot) mutatja, persze némi szöveges leírás sem árt, hogy mit is kell változtatni; és kellene egy "végeredmény fájl" (ha az szerkezetileg nem egyezik meg a kiindulásival).
Sok sikert!
Kovács Tibor (Win7x64Prof; W10x64prof; XPprofSP3: LO4.4.7; és a Hordozható AOO4.1.3, LO3.3.1-LO5.3.3)
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 2941
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Makrók, funkciók leírása. Fájl megnyitása makróval

HozzászólásSzerző: Zizi64 » 2017. április 4., kedd 7:55

Csak egy megjegyzés: a fórum-aláírásodban törött linkek vannak. Célszerű módosítani azokat. (Megtarthatod, ha nem kereskedelmi reklám célúak...)
Sok sikert!
Kovács Tibor (Win7x64Prof; W10x64prof; XPprofSP3: LO4.4.7; és a Hordozható AOO4.1.3, LO3.3.1-LO5.3.3)
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 2941
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Makrók, funkciók leírása. Fájl megnyitása makróval

HozzászólásSzerző: Zizi64 » 2017. április 4., kedd 10:13

Egyébként a Súgó igenis nagyon jó. (Én már akkor is használtam az OO.o-t, amikor csak angol súgó volt, de már akkor is, amikor NEM VOLT még súgó benne (az Excel5.0 verzióra jártam vissza súgóinformációkért...). Persze a súgó arról szól, amire megírták. Nagyon jó a Basic súgója is, de az - mint a neve is mutatja - csak a Basic saját függvényeiről, rutinjairól, szintaxisáról szól, és nem szól az API-ról.

Itt szoktak először "megkeveredni" a felhasználók: összehasonlítják az M$ VBA-val, ami EGYSZERRE egy programozási nyelv, egy programozási környezet, és az Excel API-ja is egyben.
Mivel az AOO-t és a LO-t multiplatformossá, és többféle programozási környezetben is vezérelhetővé kívánták tenni, ezért az API-t élesen különválasztották a fejlesztők, és - mintegy segítségképpen - beépítettek egy Basic IDE felületet is, amivel a legegyszerűbben, kezdők számára is elérhetően lehet használni az API függvényeket. De nem kötelező abban programozni...

Az API gyakorlatilag az összes elérhető funkció (beleértve a felhasználói felület módosításának a lehetőségét is) programból történő vezérléséhez biztosít interface felületet (azaz függvényt). Ezek a függvények nem részei a beépített Basic programozási környezetnek: bármilyen beépített, vagy külső programozási környezetből, bármilyen programozási nyelven megírt programból meghívhatók.
Sok sikert!
Kovács Tibor (Win7x64Prof; W10x64prof; XPprofSP3: LO4.4.7; és a Hordozható AOO4.1.3, LO3.3.1-LO5.3.3)
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 2941
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Makrók, funkciók leírása. Fájl megnyitása makróval

HozzászólásSzerző: Zizi64 » 2017. április 5., szerda 7:17

A szerkezete ismert, vesszővel elválasztott mezők vannak benne

Amíg nem látom konkrétan, addig a számomra nem ismert.

Milyen tartalmú mezőkről van szó?
- Szövegek? Van szöveghatároló karakter? És mi az?
- Számok? Egészek, törtek? Tizedes elválasztó milyen karakterrel van jelölve?
- Dátumok? Milyen formátumban vannak megadva? Külön van tárolva az év-hónap-nap érték, vagy kombinálva?
- Időadatok? Együtt a dátummal, vagy külön vannak tárolva? És milyen formátumban?

Ezek az információk azért kellenek, mert a nem natív, "egyszerű" formátumú (szövegalapú) adat fáljok megnyitásakor ezen paraméterek értelmezéséhez használnod kell az import szűrőt. Akkor is, amikor manuálisan nyitod meg a fájlt - vagy csak beemelsz adatokat belőle egy .ods dokumentumba - de akkor is, amikor ezt egy saját programkód által teszed. Ez egy kicsit bonyolultabbá teszi a megnyitást: vagy meghagyod azt a lehetőséget, hogy a felhasználó maga állítsa be (manuálisan) az oszlopok szűrőértékeit, vagy ezt is programból vezérelheted.
De ugyanez a probléma jelentkezik akkor is, amikor exportálni akarod az eredményt egy idegen "szimpla, szöveges" állományba.
Sok sikert!
Kovács Tibor (Win7x64Prof; W10x64prof; XPprofSP3: LO4.4.7; és a Hordozható AOO4.1.3, LO3.3.1-LO5.3.3)
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címe elejének szerkesztésével - tedd hozzá: [Megoldva].
Avatar
Zizi64
Globális moderátorok
 
Hozzászólások: 2941
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest


Vissza: Testreszabás és kibővítés

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég

cron