Stałe napisowe w programie

0

Witam!

Mam taki problem.
Piszę sobie GUI w GTK+. Na samym dole znajduje się pasek statusu (StatusBar). Chcę wyświetlać na nim pewne informację o błędach lub zdarzeniach które dzieją się w programie. Zastanawia mnie w jaki sposób mogę przechowywać te stałe napisowe, aby rozwiązanie wyglądało profesjonalnie.
Do tej pory używałem takiej konwencji - powiedzmy dla jednego pliku:

static const char *info[4] = {"info 1","info 2","info 3",NULL} 
static const char *errors[...] ...

Stała statyczna umieszczona w przestrzeni globalnej (czyli dla konkretnego pliku).

Jest jakaś sprytniejsza alternatywa dla tego rozwiązania? Jak powinno się deklarować, tego typu stałe napisowe?
Warto zaznaczyć, że zależy mi na tym, aby nazwy "info", "errors", były tylko dla pojedynczego pliku.

Proszę o odpowiedź.

2

Jeżeli tylko dla pojedynczego pliku, to możesz przecież umieścić to w .cpp i nie będzie widoczne z zewnątrz.

Przy okazji takie rzeczy powinieneś jednak wyciągnąć i używać z jakimś i18N api.

0

Dziękuję za odpowiedź.

Przeglądam internet w poszukiwaniu pewnych możliwości umieszczania tych stałych napisowych.
Czy mógłbyś dokładniej sprecyzować o jakie rozwiązanie tutaj chodzi?

Możliwości faktycznie jest bardzo sporo. Od zwykłego umieszczania stałych tak jak zaprezentowałem, po bazy danych - co wydaje się bardzo rozsądnym rozwiązaniem. Ze względu na możliwość wprowadzenia multilanga oraz prostego tłumaczenia przez ososby postronne.

Czyli ostatecznie jeżeli inne rozwiązania są bardziej skomplikowane i dla tego zastosowania praktycznie bezsensowne - to nie będzie to w złym smaku programowania używanie takich konstrukcji?

0

Kiedyś Blizzard (na pewno za czasów SC1, więc trochę lat ten pomysł już ma) umieszczał napisy w dedykowanej do tego dll'ce, która nie zawierała kodu, ale tylko i wyłącznie zasoby, czyli tekst, ikonki, grafiki, jakieś binarne dane itp.
Jak to robią teraz - nie wiem, ale jest to pewien ciekawy pomysł, bo jeśli masz np. 10 współpracujących aplikacji, to każda może sobie zaimportować dll'kę i pobrać ciąg z zasobów.

0

Napisy zwracaj metodą/funkcją (w zależności od potrzeb), jak będziesz je przechowywac w pliku jest rzecza drugorzędną. Jak będziesz chciał w przyszłości robić tłumaczenia napisów na inne języki, to zrobisz to w funkcji nie ingerując w resztę kodu.

0

Dziękuję wszystkim za informację.

Projekt, nad którym aktualnie pracuję, całe szczęscie jest dość niewielkich gabarytów.
Wszystkie stałe napisowe umiesciłem w różnych przestrzeniach nazw dostępnych dla poszczególnych okien aplikacji, w której mam statusbar'a.
Wydzieliłem do tego jeden plik, w przypadku przenośności lub przetłumaczenia na inny język, nie będzie z tym zbyt dużo pracy,

Dzieki wam zobaczyłem wiele możliwości rozwiązania tego problemu. Jeszcze raz serdecznie dziękuję.

1 użytkowników online, w tym zalogowanych: 0, gości: 1