J2ME - Java Mobile
Musíš si nejaký program vytvoriť. Tento program skonvertuje textový súbor v kódovaní CP1250 do toho súboru v UTF-8 (ale jednoducho sa dá skompilovať iba v Linuxe)Kedže tých dát budeš mať dosť veľa, bolo by vhodné vymyslieť taký formát ukladania tých dát, aby nebolo nutné mať veľa dát v pamäti (kedže v mobiloch je RAM pamäte dosť málo).
Kód: Vybrať všetko
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <iconv.h>
#define BUFFER_SIZE 80000
#define MAX_SIZE 32767
int translate_string(iconv_t cd, char *buf)
{
char tmp[BUFFER_SIZE];
size_t nconv;
char *inptr = buf, *outptr = tmp;
size_t insize = strlen(buf) + 1, avail = sizeof(tmp);
nconv = iconv(cd, &inptr, &insize, &outptr, &avail);
strcpy(buf, tmp);
return 0;
}
void write_utf(char *line, FILE *file)
{
int len;
unsigned char buf[2];
len = strlen(line);
buf[0] = (len >> 8) & 0xFF;
buf[1] = (len >> 0) & 0xFF;
fwrite(buf, 2, 1, file);
fwrite(line, len, 1, file);
}
void trim(char *s)
{
int len;
len = strlen(s);
if (len > 0 && (s[len] == '\n' || s[len] == '\r')) len--;
if (len > 0 && (s[len] == '\n' || s[len] == '\r')) len--;
s[len-1] = '\0';
}
int main(int argc, char *argv[])
{
FILE *in_file, *out_file;
char line[BUFFER_SIZE];
iconv_t cd;
if (argc != 3) {
fprintf(stderr, "Usage: cvt-to-utf <in-file> <out-file>\n");
return EXIT_FAILURE;
}
in_file = fopen(argv[1], "r");
if (in_file == NULL) {
fprintf(stderr, "Unable to open input file '%s'\n", argv[1]);
return EXIT_FAILURE;
}
out_file = fopen(argv[2], "wb");
if (out_file == NULL) {
fclose(in_file);
fprintf(stderr, "Unable to open output file '%s'\n", argv[2]);
return EXIT_FAILURE;
}
cd = iconv_open("UTF-8", "CP1250");
while (!feof(in_file)) {
if (fgets(line, sizeof(line), in_file) == NULL)
break;
trim(line);
if (strlen(line) > MAX_SIZE) {
fprintf(stderr, "Input string too long\n");
goto err;
}
translate_string(cd, line);
if (strlen(line) > MAX_SIZE) {
fprintf(stderr, "Output too long\n");
goto err;
}
write_utf(line, out_file);
}
err:
fclose(in_file);
fclose(out_file);
if (cd != (iconv_t)-1) iconv_close(cd);
return EXIT_SUCCESS;
}No teras mam problem s PRELOADEROM.
Chcem urobit preloader na nacitanie dat z TXT. Lenze som zistil ze operciu musim volat jedine z public void startApp() lebo inak nefunguje no mne sa operacia vola z public void commandAction kde sa nacita nazov TXT suboru.
Neviete mi s tym niekto pomoct prosiiim? Alebo aspon ako poslat tu premennu spet do startApp() aby som mohol operaciu zavolat odtial?
Chcem urobit preloader na nacitanie dat z TXT. Lenze som zistil ze operciu musim volat jedine z public void startApp() lebo inak nefunguje no mne sa operacia vola z public void commandAction kde sa nacita nazov TXT suboru.
Neviete mi s tym niekto pomoct prosiiim? Alebo aspon ako poslat tu premennu spet do startApp() aby som mohol operaciu zavolat odtial?
Tak nakoniec nepouzijem ten preloader lebo to je vazne urcene len na load aplikacie na zaciatku a z konstruktoru sa volat neda tak je to na prd.
Ale da sa scrolovat text v canvas? Ked vypisem text cez DrawString ale je prilis dlhy ze sa nevojde na display tak ako mam urobit aby sam rotoval z prava dolava a naspet?
Ako zistim sirku (width) stringu vypisaneho cez DrawString ze ci je sirsi ako sirka displaya?
Ale da sa scrolovat text v canvas? Ked vypisem text cez DrawString ale je prilis dlhy ze sa nevojde na display tak ako mam urobit aby sam rotoval z prava dolava a naspet?
Ako zistim sirku (width) stringu vypisaneho cez DrawString ze ci je sirsi ako sirka displaya?
Musíš dať(alebo si ten font ulož to nejakej premennej [ak to budeš používať častejšie]).
Kód: Vybrať všetko
sirka = canvas.getFont().stringWidth(SSS[0]);jj uz mi to ide no hadze to teras:
a neviem preco. Ved SSS[0] = "AHOJ"; a nieje null.
Kód: Vybrať všetko
NullPointerExceptionSkús niečo ako:
Kód: Vybrať všetko
Calendar now = Calendar.getInstance();
int hours = now.get(Calendar.HOUR_OF_DAY);
int minutes = now.get(Calendar.MINUTE);