kategorie: Amiga E, MUI
[#1] [E] Copy to Clipboard
W RKRM (wersja dla AmigaE z Aminetu) znalazłem prosty przykład obsługi clipboardu. Skopiowałem sobie tylko funkcję dopiującą do clipboardu.
PROC writeClip(string) HANDLE
  DEF ior=NIL:PTR TO ioclipreq
  IF string=NIL
    WriteF('No string argument given\n')
    RETURN
  ENDIF

  -> Open clipboard.device unit 0
  ior:=cbOpen(0)
  cbWriteFTXT(ior, string)
EXCEPT DO
  IF ior THEN cbClose(ior)
  SELECT exception
  CASE "CBWR";  WriteF('Error writing to clipboard: error = \d\n', ior.error)
  CASE "CBOP";  WriteF('Error opening clipboard.device\n')
  ENDSELECT
  ReThrow()
ENDPROC

Oczywiście wcześniej załączam niezbędne moduły, m.in. "tools/cbio", który jest we wspomnianym RKRM.
Podczas kompilacji (ecx z targetem na amigaos) wywala mi, niestety błąd o nieeznanej etykiecie "ioclipreq".
Domyślam się, że to jakiś objekt lub struktura z jakiegoś modułu, ale na pewno nie z cbio.m, bo wyświetliłem sobie ten moduł za pomocą schowmodule i nie ma tam nic o tej nazwie. Gdzie tego szukać?
[wyróżniony] [#2] Re: [E] Copy to Clipboard

@R-Tea, post #1

A moduł "devices/clipboard"? IOClipReq to odmiana IORequest dla clipboard.device.
[#3] Re: [E] Copy to Clipboard

@Hexmage960, post #2

OK To było to. Ominąłem najważniejszy moduł.

Z kolei teraz mam problem z MUI. Zmienną string z przykładu, która jest parametrem procedury wywaliłem z parametrów i zastąpiłem stringiem lokalnym w procedurze:
col_str_hex[7]:STRING

Następnie chcę pobrać string z GUI:

get(str_hex, MUIA_String_Contents, {col_str_hex})

i w tym miejscu dostaję dziwny komunikat od ecx, że "tablica jest już adresem"

ERROR: array is already address "col_str_hex"
Procedure: writeClip
Line 43:                          get(str_hex, MUIA_String_Contents, {col_str_hex})


Sprawdziłem w moich starych źródłach pisanych też w AmigaE i dokładnie w ten właśnie sposób pobierałem zawartość obiektów String w MUI i to działało. Różnica jedynie była taka, że kompilatorem był wtedy EC.
str_hex to zwykły LONG zdefiniowany globalnie i przechowujący adres StringObject.
O co mu chodzi?
[#4] Re: [E] Copy to Clipboard

@R-Tea, post #3

Na mój gust to może usuń te klamerki wokół col_str_hex. Może chodzi mu o to, że podając adres tablicy nie trzeba ich używać, tylko do wyłuskiwania adresów zmiennych.

Ostatnia aktualizacja: 04.02.2017 00:26:11 przez Hexmage960
[#5] Re: [E] Copy to Clipboard

@Hexmage960, post #4

Już to robiłem. Bez klamer kompiluje się bez błędów i nawet warningów, ale treść ze StringObject skopiowana do clipboardu i następnie wklejona gdzieś, to są jaieś śmieci.
Wiem, że sama nazwa tablicy jest już jej adresem początkowym, ale naprawdę taki właśnie sposób pobierania zawartości StringObject do tablicy (typ STRING) stosowałem w moich wcześniejszych programikach i to działało.
[#6] Re: [E] Copy to Clipboard

@R-Tea, post #5

W takim razie nie wiem - może znajdź opis tego błędu w dokumentacji do ECX.
[#7] Re: [E] Copy to Clipboard

@Hexmage960, post #6

Dzięki. Udało się mi to w końcu przejść. Na liście dyskusyjnej AmigaE poradzono mi przedefiniować cols_str_hex[7]:STRING na col_str_hex:PTR TO CHAR. Nawiasy klamrowe zostają. I w kocu zatrybiło tak, jak chciałem
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem