Potřeboval bych v makru uložit text do clipboardu. Existuje na to funkce?
Pokud ne, jak na to? S voláním Win32 (Open Clipboard apod.) bych si asi poradil, ale jak zkopírovat data z pascalského řetězce do paměti, kterou vrátí GlobalLock…
Potřeboval bych v makru uložit text do clipboardu. Existuje na to funkce?
Pokud ne, jak na to? S voláním Win32 (Open Clipboard apod.) bych si asi poradil, ale jak zkopírovat data z pascalského řetězce do paměti, kterou vrátí GlobalLock…
Nekde na netu jsem videl CopyToClipboard.exe, kteremu se jako parametr predava text. To exe pak zavolat v Combine … Nevim, kde jsem ho sebral, tak ti ho pro jistotu prikladam ![]()
Díky! Skoro by se chtělo citovat Nicka Cartera: "Jak primitivní!" ![]()
Ale jak účinné…
No, trochu jsem se obaval tve reakce, protoze de facto je to jina uloha, nez jsi popisoval.
Tys to chtel z makra, ja ti to navrhoval externim programem (i kdyz jej muzes take zavolat z makra). Ale na druhou stranu, pokud bys pouzival funkci z knihovny, take by ta knihovna byla externi. Ovsem pravdepodobne by byla soucasti Win, zatimco takto musist program distribuovat s makrem.
A jeste me napada, ze by to mohlo jit pres vbs. V makru si vytvorit script a ten pak spustit. Delam takto manipulaci se zastupci *.lnk. Pak by nebyl potreba zadne externi program, script si vytvoris v okamziku potreby a hned ho zase smaznes.
No, možná to časem vymyslím/předělám do podoby volání Win32 API. Ale pro začátek toto stačí určitě.
Pascalovsky retezec je ve skutecnosti pointer do pameti, kde lezi data toho retezce. Dokonce je na konci i pridana nula, takze je to zpetne kompatibilni s c-ckovskym retezcem. (narozdil od neho je retezec automaticky alokovan, realokovan, ma referencni pocitadlo, atd. ale tyto sluzebni informace si schovava jinde.)
Ale jedna vec je pascal, a druha vec je ten skriptovaci engine. To jsou dosti odlisne veci, byt se tvari podobne. A popravde, takovehle hratky s pameti jsem tam jeste nezkousel.
Ale na jedno reseni jsem prisel, takova obezlicka. Udelat si ve skriptu objekt typu TMemo, do jeho property Lines das textova data. Pomoci SelStart a SelLength je oznacis a pak pomoci metody CopyToClipboard to placnes do clipboardu.
Obdobne se to da pouzit i na cteni dat. ![]()