Есть ли возможность в объекте OBJ_TEXT выводить текст в несколько строк? - страница 6

 
Реter Konow:
Можно прочесть данные из ресурса с помощью ResourceReadImage, но для этого их нужно туда записать с помощью ResourceCreate. Функция ResourceCreate принимает только массив данных типа uint и если нам нужно записать массив данных другого типа, нужно воспользоваться union. Объявить в нем несколько массивов разных типов. После этого, мы можем сохранять в ресурсе любые данные, в том числе и строки. Для преобразования строки в тип char используйте StringToCharArray, а обратно - CharArrayToString. Таким образом, дело вовсе не в канвасе, а в ресурсе, в который с помощью юнионов можно записывать любые типы данных.

Спасибо что откликнулись. Вот именно union для меня загадка века. Если не затруднит, более подробно об этом.

Ресурс создаётся с помощью ResourceCreate из данных типа uint, но вот чтение ресурса не дало результатов. И если вы прочтёте следующие мнения, то поймёте почему я бросил эту затею, но вы вселили в меня надежду.

 
Alexey Viktorov:

Спасибо что откликнулись. Вот именно union для меня загадка века. Если не затруднит, более подробно об этом.

Ресурс создаётся с помощью ResourceCreate из данных типа uint, но вот чтение ресурса не дало результатов. И если вы прочтёте следующие мнения, то поймёте почему я бросил эту затею, но вы вселили в меня надежду.

Петр совсем про другое говорит :). Он на своей волне. Он обрисовал схему того, как можно через ресурсы обмениваться данными между советниками.

К Вашей задаче распознавания надписи с Канваса это не имеет отношения...

 
Andrey Barinov:

Петр совсем про другое говорит :). Он на своей волне. Он обрисовал схему того, как можно через ресурсы обмениваться данными между советниками.

К Вашей задаче распознавания надписи с Канваса это не имеет отношения...

Я не исключаю тот факт, что я не совсем правильно сформулировал вопрос.

Если я создаю ресурс, то он сохраняется или можно его сохранить принудительно. А потом его прочесть. Прочесть именно ресурс, как и было сказано в начальном вопросе.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Есть ли возможность в объекте OBJ_TEXT выводить текст в несколько строк?

Alexey Viktorov, 2019.08.05 09:30

Новый вопрос: Можно-ли прочесть текст из ресурса в канвасе?

К примеру эти строки, или любую из них.

Цель: При помощи канваса есть строка которая содержит дату. Вот эту дату и желательно прочесть.

Либо применить один из старых проверенных способов, GV, файл, графика или ещё чего-то.


 
Alexey Viktorov:

Я не исключаю тот факт, что я не совсем правильно сформулировал вопрос.

Если я создаю ресурс, то он сохраняется или можно его сохранить принудительно. А потом его прочесть. Прочесть именно ресурс, как и было сказано в начальном вопросе.


Дак вот ведь: 

 
Andrey Barinov:

Дак вот ведь: 


Андрей, но ведь это не осталось без моего внимания

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Есть ли возможность в объекте OBJ_TEXT выводить текст в несколько строк?

Alexey Viktorov, 2019.08.06 13:19

Я нашёл его, но ничего у меня не получилось. Пытался массив в строку перевести, но типы массивов не совпадают. Как ни крутил нихрена не получается. Может что-то не так делаю. но пока нет новых мыслей.


А дальше вы ничего не предложили.
 
Alexey Viktorov:

Спасибо что откликнулись. Вот именно union для меня загадка века. Если не затруднит, более подробно об этом.

Ресурс создаётся с помощью ResourceCreate из данных типа uint, но вот чтение ресурса не дало результатов. И если вы прочтёте следующие мнения, то поймёте почему я бросил эту затею, но вы вселили в меня надежду.

Хорошо, попытаюсь более подробно.

1. Объявляете юнион.

2. Внутри юниона объявляете несколько массивов разных типов.

Например:

//--------------------------------------------------------------------
union SEND{uchar char_Send[32000]; uint uint_Send[8000];};
union READ{uchar char_Read[32000]; uint uint_Read[8000];};
//--------------------------------------------------------------------


3. Для записи строки нам нужен массив char_Send.

4. Для чтения строки нам нужен массив char_Read. 

5. Допустим, у нас есть строка "aalksdjghalkfhaerlkvhelvkjhalekhavk" и мы хотим записать ее в ресурс. Мы делаем так:

int q = StringToCharArray("aalksdjghalkfhaerlkvhelvkjhalekhavk",send.Char_Send);

После этого, наша строка находится в массиве Char_Send.

6. Чтобы строка оказалась в ресурсе, мы должны сохранить массив uint_Send в функции ResourceCreate();

ResourceCreate("::Имя_ресурса",send.uint_Send,8000,1,0,0,0,COLOR_FORMAT_XRGB_NOALPHA);

7. Важно понимать, что записав строку в Char_Send, мы перевели ее в тип чар, а в типе  uint строка окажется автоматически. В этом суть юнионов. Если Вы запишите в Char_Send строку, в Uint_Send она уже будет. Вы только сохраните ее с помощью ResourceCreate();

8. Чтобы извлечь строку из ресурса, воспользуйтесь функцией ResourceReadImage(); Укажите имя ресурса и передайте в нее массив uint_Read.

ResourceReadImage("::Имя_ресурса",read.uint_Read,width,height);

9. После этого, строка предствленная в массиве uint_Read уже будет находится в массиве char_Read (без перезаписи), а из char_Read вы ее извлечете с помощью функции CharArrayToString().


Фу, кажется все...))

 
Реter Konow:

Хорошо, попытаюсь более подробно.


Фу, кажется все...))

Спасибо Peter, всё получилось. Только сто́ит отметить, что если при создании ресурса использовать COLOR_FORMAT_XRGB_NOALPHA то картинка получается, не та мягко выражаясь. А если использовать COLOR_FORMAT_ARGB_NORMALIZE то картинка красивая, но читаются кракозябры. Наверное надо поэкспериментировать с кодовой страницей. Может и получится чего...

 
Alexey Viktorov:

Спасибо Peter, всё получилось. Только сто́ит отметить, что если при создании ресурса использовать COLOR_FORMAT_XRGB_NOALPHA то картинка получается, не та мягко выражаясь. А если использовать COLOR_FORMAT_ARGB_NORMALIZE то картинка красивая, но читаются кракозябры. Наверное надо поэкспериментировать с кодовой страницей. Может и получится чего...

Если ресурс предполагается использовать для хранения картинки, то есть три варианта обработки цвета - COLOR_FORMAT_XRGB_NOALPHA, COLOR_FORMAT_ARGB_NORMALIZE, COLOR_FORMAT_ARGB_ROW. Но, если ресурс должен хранить данные, то следует использовать параметр COLOR_FORMAT_XRGB_NOALPHA, поскольку обработка цвета неуместна.
 
Реter Konow:
Если ресурс предполагается использовать для хранения картинки, то есть три варианта обработки цвета - COLOR_FORMAT_XRGB_NOALPHA, COLOR_FORMAT_ARGB_NORMALIZE, COLOR_FORMAT_ARGB_RAW. Но, если ресурс должен хранить данные, то следует использовать параметр COLOR_FORMAT_XRGB_NOALPHA, поскольку обработка цвета неуместна.

Всё понятно, спасибо. Получается, что для картинки и передачи данных придётся делать два разных ресурса.

 
Alexey Viktorov:

Всё понятно, спасибо. Получается, что для картинки и передачи данных придётся делать два разных ресурса.

Конечно.