purebasic.info

PureBasic forum
Текущее время: Чт июн 20, 2019 2:26 pm

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: MultiByteToWideChar
СообщениеДобавлено: Пн мар 11, 2019 7:19 pm 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 479
Благодарил (а): 33 раз.
Поблагодарили: 55 раз.
Пункты репутации: 0
Не могу сделать, весь мозг сломал. Из AutoIt3 аналога взял запрос ширины, в остальном там создаётся структура wchar[кол].

Код:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
; CodePage - в какой кодировке начальный текст
Procedure.s StringToUnicode(*Text, CodePage)
        Protected Out.String, LenB, OutText$
;       Debug *Out\s
        ; вычислить число байт для вывода юникода
        LenB = MultiByteToWideChar_ (CodePage, 0, *Text, -1, #Null, 0)
;       Debug LenB
        OutText$ = Space(LenB) ; выделить место для вывода юникода
;       Out\s = Space(LenB) ; выделить место для вывода юникода
        MultiByteToWideChar_ (CodePage, 0, *Text, -1, @OutText$, LenB)
;       MultiByteToWideChar_ (CodePage, 0, *Text, -1, @Out\s, LenB)
;       ProcedureReturn Out\s
        ProcedureReturn OutText$
EndProcedure
 
Fichier$ = "C:\...\аспи.txt" ; тут файл ANSI с тектом
 
If ReadFile(0, Fichier$)
        Format=ReadStringFormat(0)
        Text$ = ReadString(0, Format | #PB_File_IgnoreEOL)
        CloseFile(0)
EndIf
 
; Debug #CP_
; #CP_ACP = 0 (ANSI)
; OEM = 1
; Macintosh = 2
; Windows ANSI для текущbq  = 3
; #CP_SYMBOL = 42
; #CP_WINUNICODE = utf-16 = 1200
; #CP_WINANSI = 1004
; windows-1250 = 1250
; windows-1251 = 1251
; koi8-r = 20866
; koi8-u = 21866
; oem = 866
; ISO-8859-5 = 28595
; #CP_UTF7 = 65000
; #CP_UTF8 = 65001
Text$ = "Привет"
Debug StringToUnicode(@Text$, 0)
 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: MultiByteToWideChar
СообщениеДобавлено: Пн мар 11, 2019 10:15 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11483
Благодарил (а): 4 раз.
Поблагодарили: 468 раз.
AZJIO писал(а):
Не могу сделать, весь мозг сломал.
Код рабочий. Но функции сообщается что строка в ASCII, но на самом деле в юникоде.
Так правильнее.
Код:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
; CodePage - в какой кодировке начальный текст
Procedure.s StringToUnicode(*Text, CodePage)
        Protected Out.String, LenB, OutText$
;       Debug *Out\s
        ; вычислить число байт для вывода юникода
        LenB = MultiByteToWideChar_ (CodePage, 0, *Text, -1, #Null, 0)
;       Debug LenB
        OutText$ = Space(LenB) ; выделить место для вывода юникода
;       Out\s = Space(LenB) ; выделить место для вывода юникода
        MultiByteToWideChar_ (CodePage, 0, *Text, -1, @OutText$, LenB)
;       MultiByteToWideChar_ (CodePage, 0, *Text, -1, @Out\s, LenB)
;       ProcedureReturn Out\s
        ProcedureReturn OutText$
EndProcedure
 
; Fichier$ = "C:\...\аспи.txt" ; тут файл ANSI с тектом
;  
; If ReadFile(0, Fichier$)
;         Format=ReadStringFormat(0)
;         Text$ = ReadString(0, Format | #PB_File_IgnoreEOL)
;         CloseFile(0)
; EndIf
 
; Debug #CP_
; #CP_ACP = 0 (ANSI)
; OEM = 1
; Macintosh = 2
; Windows ANSI для текущbq  = 3
; #CP_SYMBOL = 42
; #CP_WINUNICODE = utf-16 = 1200
; #CP_WINANSI = 1004
; windows-1250 = 1250
; windows-1251 = 1251
; koi8-r = 20866
; koi8-u = 21866
; oem = 866
; ISO-8859-5 = 28595
; #CP_UTF7 = 65000
; #CP_UTF8 = 65001
*Text = Ascii("Привет")
Debug StringToUnicode(*Text, 0)
FreeMemory(*Text)


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: MultiByteToWideChar
СообщениеДобавлено: Вт мар 12, 2019 9:13 pm 
Не в сети
профессор

Зарегистрирован: Чт фев 09, 2017 10:37 am
Сообщений: 479
Благодарил (а): 33 раз.
Поблагодарили: 55 раз.
Пункты репутации: 0
Понял, как я раньше говорил, что переменные создаются в UTF-16, то даже читая из ANSI-файла преобразуется в UTF-16. Я подумал что прочитается как ANSI, а будет восприниматься как UTF-16, а он сразу преобразуется из ANSI в UTF-16. Это как в Noepad++ есть функции "Просматривать в кодировке ...", а есть "Преобразовать в кодировку ...", в PureBasic получается что сразу преобразует чтобы уже работать в формате, который понимают функции WinAPI и внутренние.


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

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


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

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


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

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