purebasic.info

PureBasic forum
Текущее время: Чт июл 19, 2018 10:16 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Глюк отображения текста.
СообщениеДобавлено: Вт июл 03, 2018 6:28 pm 
Не в сети
док

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 90
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
Неверно отражает уникод в редакторе-EditorGadget и надписи на кнопке.
В проге так нетекстовой формат, а получаю этот бред - íåòåêñòîâîé ôîðìàò
Если компилировать прогу в АНСИ то вроде все нормально, но в 5.62 такой вариант непокатит

Проверял в пурике 5,21LTS, 5.62(демо версии правда исключал АПИ в проге, темболее в ней нет выбора АНСИ)

Собственно делал прогу, точнее допиливал со старого пурика на новый и 2 суток голову ломал чего за бред с отображением текста. Работал с буфером обмена, но какоето странное поведение проги замучило, в юникоде считывал в буфер текст и отражал в разных кодировках - Ascii, UTF8, Unicode ну и для просмотда разной инфы ещу заганял в масив и потом с масива отражал как обычный текст. Когда копировал текст Анси, проблем нет, как только юникод(с редактора копируется РТФ формат) показания в масиве и строчных переменных отличалось, масив показывал РТФ текст, а переменные то что копировал как обычный текст, хотя должно везде РТФ.
В результате решил прогу сократить и пересмотреть память, функции все правильно показывают, где провал немог найти. сократил прогу до мизера и получил то что во вложении.
Уже прогу запускал на другом компе, перезапускал пурик, ничего непомогло, главное пичатает с клавиатуры руский нормально(еще бы непечатал).


ПРОБЛЕМА РЕШИЛАСЬ ПРОСМОТРОМ СОХРАНЕННОГО ФАЙЛА В ФАР МЕНЕДЖЕРЕ.
Там в настройках установлено что в УТФ-8 сохраняет.
Вот что вызывает крякозяблы(снимок с фар менеджера)
КЕ\Clipboard\эксперимент-А.pb DOS 2540 Col 0 0%
000: 44 69 6D 20 61 61 2E 62 │ 28 32 30 31 30 29 3B 41 Dim aa.b(2010);A
010: 4E 53 49 2F 55 54 46 0D │ 0A 48 57 4E 44 3D 4F 70 NSI/UTF♪◙HWND=Op

А вот юникод
Е\Clipboard\эксперимент-Б.pb DOS 2952 Col 0 0%
00: EF BB BF 44 69 6D 20 61 │ 61 2E 62 28 32 30 31 30 я╗┐Dim aa.b(2010
10: 29 3B 41 4E 53 49 2F 55 │ 54 46 0D 0A 48 57 4E 44 );ANSI/UTF♪◙HWND

Синим выделено то что делает прогу в нормальной кодировке, а значит и отражает и работает коректно. Если прогу во вложении открыть в пурике и в ИДЕ выделить, а потом скопировать и в новое окно ИДЕ вставить и запустить все глюки исчезнут.

НИКАК НЕУЗНАТЬ ЧТО ПРОГА СОХРАНИЛАСЬ НЕ В UTF-8 ФОРМАТЕ, ПУРИК СОХРАНЯЕТ В ТОМ ВИДЕ В КОТОРОМ ОТКРЫЛ НЕСМОТРЯ НА НАСТРОЙКИ Compiler\По умолчанию... Кодировка исходного файла-UTF-8.
Кстати и в первом окне(там файл с вложения) и второй файл в настройка компилятора стоит юникод, отличие только формат сохраненного. Забавно что ИДЕ вставляет юникод, а вот с АЛТ недает.


Вложения:
эксперимент-А.pb [2.5 KiB]
Скачиваний: 12

_________________
искатель истины
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Глюк отображения текста.
СообщениеДобавлено: Вт июл 03, 2018 6:43 pm 
Не в сети
док

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 90
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
И еще может както смотреть в файле этот индификатор УТФ-8, например открывая файл пурика.
Но тогда как узнать адрес файла который ИДЕ скомпилировал, чтобы посмотреть в УТФ-8 или анси написана прога.
Имею введу есть к примеру мой файл типа как этот "эксперимент-А.pb" у него есть путь полный, D:\SA\ПРОГРАМ....Е\Clipboard\эксперимент-А.pb. Когда ИДЕ скомпилит то как узнать этот путь самим ексешником, чтоб перечитать первые три байта на наличие кодировки и предупредить что версия пурика неподходящая.
Неинтересно бросать путь в каждую прогу ручками, многовасто их, а глюков таких можно получить...

_________________
искатель истины


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Глюк отображения текста.
СообщениеДобавлено: Вт июл 03, 2018 8:16 pm 
Не в сети
доцент

Зарегистрирован: Пн мар 26, 2018 9:09 pm
Сообщений: 36
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Пункты репутации: 0
Так это ж BOM. Его сейчас анализируют все программы, открывающие текстовые файлы.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Глюк отображения текста.
СообщениеДобавлено: Ср июл 04, 2018 6:14 pm 
Не в сети
док

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 90
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
Piter: Так это ж BOM.
Ага ж BOM,BOM,BOM.... И БУМ на голову проблема.
Я в курсе что это БОМ, вот именно что пурик несмотрит что там БОМ и отправляет текст в формате БОМа, а не в формате указаном в настройках и нехранит в своем редакторе в УДФ.
Ну и собственно я понял, что ты нечитал что надо сделать и что за проблема получится.
Скачиваеш прогу во вложении , открываеш в пурике копируеш ее в пурике(кнопками контрол-це) и вставляеш (вставляеш Контрол-ве) в новое окно пурика и оба этих окна запускаеш и получаеш РАЗНЫЙ РЕЗУЛЬТАТЬ, ХОТЬ ПРИ ЭТОМ ПРОГИ ОДИНАКОВЫЕ В РЕДАКТОРАХ НА 200% :D

К стати с той самой вики что ты дал - "А наличие маркера в начале файлов PHP (до тега <?php) приводит к тому, что пустая строка отправляется клиенту ещё до начала выполнения кода, что вызывает сбой ..." вот и у меня в пурике тоже сбой нормальной работы.

_________________
искатель истины


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Глюк отображения текста.
СообщениеДобавлено: Ср июл 04, 2018 8:36 pm 
Не в сети
доцент

Зарегистрирован: Пн мар 26, 2018 9:09 pm
Сообщений: 36
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Пункты репутации: 0
Меня тоже напрягает изменения синтаксиса PB и отсутствие возможности компилировать в ASCII, но мы имеем то, что имеем, поэтому у меня стоят разные версии. Для старых программ использую старые версии, а что то новое создавать стараюсь в новых. Это нормальное развитие, также как и граммпластинки, перфокарты, магнитофоны, CD, DVD, Flash, Blue-Ray, что там будет следующее?
Под рукой всегда есть AkelPad или NP++, которыми можно сохранить в любом виде.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Глюк отображения текста.
СообщениеДобавлено: Чт июл 05, 2018 3:02 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1639
Откуда: Алматы
Благодарил (а): 14 раз.
Поблагодарили: 45 раз.
Пункты репутации: 5
я щас туго сображаю... но по моему вы там чот фигню какую-то городите :) при чтении следует обратить внимание на третий параметр в функции. если речь идет конечно читать как текст - там можно будет указать и анси и юникод и третье там чото... тоже самое и с сохранением, если сохраняется как текст writestring или как там она - на третий параметр то смотрите :) посему в каком угодно формате программа может прочитать и в каком угодно формате она может сохранить. а ежели как байты сохранять - там и вовсе нет никаких проблем.

крякозябры в теле самой программы могут вылезти по другой причине. ранее, когда был выбор юникод или обычная компиляция ехе - так-же был и формат отображения в IDE - обычно там стоял Plain Text. с английскими то буквами никаких проблем хоть в том, хоть в другом случае. а вот русские он крякозябрит. поэтому в новых версиях, где только юникод и наблюдяется такой случай с крякозябрами - надо просто выделить весь проект, код точнее в IDE, скопировать, поменять отображение... эээ... на utf? или на Plain Text? я забыл... и вставить с заменой. и запустить. на этот раз на кнопках или гаджетах будет усе по русски, как полагается.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Глюк отображения текста.
СообщениеДобавлено: Чт июл 05, 2018 5:20 pm 
Не в сети
док

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 90
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
SereZa писал(а):
крякозябры в теле самой программы могут вылезти по другой причине.
...и вставить с заменой. и запустить. на этот раз на кнопках или гаджетах будет усе по русски, как полагается.
Вот и долго искал в чем проблема, вроде все одинаково, а работает по разному и помогает "вставить с заменой.".
SereZa писал(а):
формате программа может прочитать и в каком угодно формате она может сохранить
если сам екзешник командами типа WriteString... то да, но я неработаю с файлами, а если "формат отображения в IDE - обычно там стоял Plain Text.", то пробовал результат едентичный-КРЯКОЗЯБЛИКИ, короче непомогаеть однако, фокус неудался.
А вот (если ненапутал, голова тож неварит) в ИДЕ сохранить в АНСИ(и незабыть востановить галочку на УТФ), а в блокноте пересохранить в УТФ-8, то вроде нормально рускими пишет.
Просто сколько лет с разными версиями пурика(3.92-5.21) работал проблем никогда подобных небыло, и тут на тебе. Только приходилось править некоторые функции, количество параметров или название, хотя встречабтся перлы и хорошо перекопать приходилось, т. к. часть функций удалили либо работаю нетак. Помню както с буфером обмена, все работало и вдруг операции чтения изаписи в буфер только текст и картинки, вау приехали, а у меня работа с разными форматами, пришлось АПИ учить :) , благо чегото уже ковырял про буфер обмена.

Я файл выложил во вложении потому, что если его с форума копировать то ничего с проблем невылезет и окажется, что я дурацкую тему начал.

Вот если бы когда открываеш в ИДЕ и запускаеш и можна было узнать путь к к этому файлу что на писан на пурике, а не екзешнике, то конечно можно чегото посмотреть в ВОМе и предупредить меня что чтото тут нето и попросить пересохранить в блокноте в нужной кодировке и переоткрыть. Главное как узнать из проги путь к компилируемой проге на "*.pb".

знач ковырял код и вот что накопал:
Код:
1
2
3
4
5
6
7
a123456$="Д":
Debug a123456$+"  "+Str(@a123456$)+"  "+PeekW(@a123456$)+"  "+Hex(PeekB(@a123456$), 1 ) +" "+Hex(PeekB(@a123456$+1), 1 )
If PeekW(@a123456$)=1044
    MessageRequester("все гут","проблем с кодировкой нет")
Else
    MessageRequester("все коту под хвост","проблем с кодировкой много будет, скопируй текст создай новую вкладку  и встав в нее и сохрани под таким самым названием")
EndIf

Короче проверяю в какой кодировке закодирована буква -"Д" и если в анси то кодировка выдаст результа-"все коту под хвост".

Теперь вопрос немного ковырялся и немогу почемуто вывести человеческим текстом когда есть ошибка выдает вместо -"все коту под хвост", ЭТО - "ana eioo iia oaino" но еще с всякими черточками вверху, пытался применить PeekS и PokeS чегото неразкодирую никак Помогите, нехочется писать на английском сообщение "wse kotu pod xwost"

_________________
искатель истины


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Глюк отображения текста.
СообщениеДобавлено: Чт июл 05, 2018 6:33 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1639
Откуда: Алматы
Благодарил (а): 14 раз.
Поблагодарили: 45 раз.
Пункты репутации: 5
скачал твой пример, сначала скопировал весь код, после через меню поменял с Plain Text на UTF и вставил код с заменой. после этого все работает нормально. так что по идее проблемы здесь нет. это просто файл проекта был создан в старой версии, где был вариант анси или юникод. а тут только юникод. поэтому надо текст в IDE перекопировать с этим переключением. когда в старом копируешь и потом вставляешь измененный с заменой старого кода - сохраняются русские символы. если просто галку перетыркнуть на UTF - не поможет. поскольку в коде русские символы портятся. поэтому и вставляешь поверх оригинальный скопированный код, тогда IDE правильно эти символы сохраняет.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Глюк отображения текста.
СообщениеДобавлено: Пт июл 06, 2018 7:23 pm 
Не в сети
док

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 90
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
Piter ты вроде в кодировках немного шареш, как предыдущий код заставить нормально отражать руский когда файл сохранен в АНСИ, а прога компилирована в УТФ. У меня удалось както преобразовать, но потому, что отразилась только одна буква, а мне это некатит(код непомню).
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
a123456$="Д":;буква в анси и УТФ имеет разное число, на этом и основано мое определение
Debug a123456$+"  "+Str(@a123456$)+"  "+PeekW(@a123456$)+"  "+Hex(PeekB(@a123456$), 1 ) +" "+Hex(PeekB(@a123456$+1), 1 )
If PeekW(@a123456$)=1044
    MessageRequester("все гут","проблем с кодировкой нет")
Else
    MessageRequester("все коту под хвост","проблем с кодировкой много будет, скопируй текст создай новую вкладку  и встав в нее и сохрани под таким самым названием")
EndIf
 
a$="Дqwer1111йцук2222"
Debug a$
 
a1$=Space(500)
PokeS(@a1$, a$, 100, #PB_Unicode); #PB_Unicode #PB_UTF8 #PB_Ascii
Debug a1$
 
a1$=Space(500)
PokeS(@a1$, a$, 100, #PB_UTF8); #PB_Unicode #PB_UTF8 #PB_Ascii
Debug a1$
 
a1$=Space(500)
PokeS(@a1$, a$, 100, #PB_Ascii); #PB_Unicode #PB_UTF8 #PB_Ascii
Debug a1$
 
Debug PeekS(@a$, 100, #PB_Unicode)
Debug PeekS(@a$, 100, #PB_UTF8)
Debug PeekS(@a$, 100, #PB_Ascii)
 


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


Цитата:
сначала скопировал весь код
Я так тоже умею(копи-пастить), но если знаеш, что у тебя есть проблема то это поможет, а как ты узаеш, что у тебя текст неверную кодировку имеет? Пурик то никак несообщает, а вваливает в редактор ИДЕ в той кодировке в которой описано в БОМе, вот еслибы он преобразовывал в единый стандарт УТФ или юникод, тогда проблем небудет. Вот я и спрашиваю как это отразить нормальным шрифом, чтобы в дебугере предупреждать.

_________________
искатель истины


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Глюк отображения текста.
СообщениеДобавлено: Пт июл 06, 2018 8:29 pm 
Не в сети
док

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 90
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
вот пытаясь перевести текст в читабельный вид столкнулся с такой проблемой
Код:
1
2
3
x=1043
Debug Chr(x)
Debug Chr(1043)


Г
-тут какойто квадратик
если прога сохранена в анси, а открыта в УТФ, внешне все одинаково но дебагер выдает разые буквы, в первом случае юникод, а во втором анси, ну и ошибку после которой пурик вылетел в трубу т. е. завершил работу и все что я писал навернулось :lol: -жесть, но повторно нероизошло и после перезапуска невылетает.
И опять я долго пытался понять почему несходится логика в отражении, пока непроверил.
Такое хоть пиши прогукоторая будет сканировать все пуриковские проги на басике и проверять БОМ и запись в конце файла ; EnableUnicode тоесть несоответствие формата.

_________________
искатель истины


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Глюк отображения текста.
СообщениеДобавлено: Пт июл 06, 2018 9:52 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1639
Откуда: Алматы
Благодарил (а): 14 раз.
Поблагодарили: 45 раз.
Пункты репутации: 5
а я не понимаю все эти стенания :) запустил какой старый файл - заметил, что надписи крякозябренные - скопировал, изменил вид отображения текста в ide, вставил. все. после сохранения он всегда будет открываться правильно... конечно если не понадобится там какой-нить старый PB запустить... в нем возникнут проблемы после подобного. например с путями до файлов, содержащих русские буквы. в 5.60 такой проблемы нет.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Глюк отображения текста.
СообщениеДобавлено: Пн июл 09, 2018 10:55 am 
Не в сети
док

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 90
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
Поинимаеш, у меня не одно направление, поэтому открыто несколоко закладок, к каждой закладке открываютсянесколько дополнительных примеров из которых берется код, который в других нескольких закладках тестируется прежде чем внести в основной код, особенно когда чегото неработает в основном коде, хотя раньше точно помню работало, и долго ищещ где подводные камни. И часто незамечаеш где у тебя прикол все отражает верно, а чегото вообще полем и огородами. У меня все отражалось верно но в определенные моменты были какието несоответствия в ХЕКсе одни символы(коды), а отражались другие, хотя текст писался рускими буквами и отражаля. Причем копируеш в буфер обмена все вроде окей, правильно отражает, копируеш в другом месте, а у тебя текст один, а хекс и отображение этого хекса вдруг нестыкуется так что не только руский но и инглиш совершенно другой. Этот прикол был связан с тем что копируеш АНСИ все ОК, копируеш РТФ, все в разбос, думал кодовые страници нете, я уже все перелопатил, начал в начале проги писать проверки своих ошибок, да нет какието глюки. Неплохо если сразу это видно как у тебя, но у меня текст был руский не крякозябликами, а некоторые вещи выводил неверно. Пока ненашел это несоответствие. Думаю что скорее прийдется писать прогу проверки всех пуриковских кодов, открывая *PB файлы и проверять наличие этой строки в конце - "; EnableUnicode" и в каком формате сохранен текст т. к. вставлять в каждую прогу в шапку проверку, хотя я почти нашел как отражать текст при несоответствии кодировок.

_________________
искатель истины


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB