Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (2): [1] 2 »   

> Без описания
CblPHU4
Отправлено: 09 Августа, 2022 - 12:42:11
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 29
Дата рег-ции: Авг. 2022  
Репутация: 0




Доброго времени суток, есть маленький код, который из блокнота считывает строчку, сохраняет ее в буфер, после чего через ctrl+v вставляет куда я покажу, и так пока файл не кончится
Если в файле английский текст, проблем никаких нету, но если русский, то появляются кракозябры

При чем, если использовать команду sendlanguage("00000409", 0); для изменения раскладку на русскую, то идут одни символы
Здесьрусскийтекст

А если изменить раскладку на английский, то совсем другие символы
Здесьрусскийтекст

Как можно это исправить? Или подскажите как вместо использования буфера печатать русский текст из string

CODE:

//Чтение по целой строке
if (fopen ("spisok5.txt", "r")!=0)
{
string spisok;
tt:if (freadline(spisok)!=0)
{
sendlanguage("00000409", 0);
writeclipboard(spisok); // сохраняет в буфер строку

mousemove(1375,50);
mouse(LEFT);
keydown(CONTROL);
key('v');
keyup(CONTROL);
pause(500);

goto tt;
}
fclose();
}

(Отредактировано автором: 09 Августа, 2022 - 12:42:37)

 
 Top
Zireael
Отправлено: 09 Августа, 2022 - 12:49:13
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




Нужно прочитать весь файл и конвертировать текст из utf8 в ansi, используя функцию utf8toansi.
 
 Top
CblPHU4
Отправлено: 09 Августа, 2022 - 13:14:41
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 29
Дата рег-ции: Авг. 2022  
Репутация: 0




 Zireael пишет:
Нужно прочитать весь файл и конвертировать текст из utf8 в ansi, используя функцию utf8toansi.

Тот же самый прикол
Написал текст в 1 строку на 2 языках, для наглядности
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]

CODE:

if (fopen ("spisok5.txt", "r")!=0)
{
string spisok;
string F=utf8toansi (spisok);
tt:if (freadline(F)!=0)
{
writeclipboard(F); // сохраняет в буфер строку
messagebox(F);

goto tt;
}
fclose();
}
 
 Top
Zireael
Отправлено: 09 Августа, 2022 - 14:24:14
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




Потому что неправильно написан код.
 Цитата:
string spisok;
string F=utf8toansi (spisok);

Переменная spisok это пустая строка, т. е. в функцию utf8toansi передали пустую строку. И какой в этом смысл?
Сначала надо прочитать файл, а уже потом конвертировать текст.

(Отредактировано автором: 09 Августа, 2022 - 14:25:21)

 
 Top
CblPHU4
Отправлено: 09 Августа, 2022 - 14:45:18
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 29
Дата рег-ции: Авг. 2022  
Репутация: 0




 Zireael пишет:
Потому что неправильно написан код.
 Цитата:
string spisok;
string F=utf8toansi (spisok);

Переменная spisok это пустая строка, т. е. в функцию utf8toansi передали пустую строку. И какой в этом смысл?
Сначала надо прочитать файл, а уже потом конвертировать текст.


spisok не является пустым
Тут же наверху строка, которая считывает строчку из выбранного файла и передает его в параметр string

Ну да ладно, я нашел решение проблемы))))
Прикол оказался в том, что сам блокнот сохраняет по умолчанию в кодировке UTC-8
Если открыть файл, то буквы русские, но когда я навожусь на него в папке, для предпросмотра, то видны как раз таки символы (Использую QTTabBar)
Нужно всего лишь "сохранить как" и в самом низу выбрать кодировку ANSI

Спасибо за уделенное время
 
 Top
Zireael
Отправлено: 09 Августа, 2022 - 15:51:20
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
spisok не является пустым
Тут же наверху строка, которая считывает строчку из выбранного файла и передает его в параметр string

Добавил комментарии, может так понятнее будет.
CODE:
string spisok; // объявить переменную, в данном случае пустая строка
string F=utf8toansi (spisok); // перевести из utf8 в ansi, в данном случае переводить нечего, т. к. spisok пустая строка
tt:if (freadline(F)!=0) //прочитать строку
// т. е. в переменной F оригинальная строка из файла
 
 Top
CblPHU4
Отправлено: 09 Августа, 2022 - 16:58:39
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 29
Дата рег-ции: Авг. 2022  
Репутация: 0




 Zireael пишет:
 Цитата:
spisok не является пустым
Тут же наверху строка, которая считывает строчку из выбранного файла и передает его в параметр string

Добавил комментарии, может так понятнее будет.
CODE:
string spisok; // объявить переменную, в данном случае пустая строка
string F=utf8toansi (spisok); // перевести из utf8 в ansi, в данном случае переводить нечего, т. к. spisok пустая строка
tt:if (freadline(F)!=0) //прочитать строку
// т. е. в переменной F оригинальная строка из файла


Я понял о чем ты, но в самом верху есть строчка
if (fopen ("spisok5.txt", "r"Подмигивание!=0)

Вот тебе инфа, если не понятно(для просмотра ссылки Вам необходимо авторизоваться) spisok не является пустым, потому что в него сразу записывается инфа

Зачем спорить если я запускаю код и он работает как надо на английском, а именно каждую строчку выводит по очереди из файла, а строчки выводятся потому что получается что spisok не пустой, правильно?
У меня лишь была проблема с русским языком, и это не потому что spisok якобы пустой, с какого-то вдруг колена, а потому что блт блокнот не в той кодировке работал
Запусти код и проверь сам, зачем спорить ни о чем
 
 Top
Zireael
Отправлено: 09 Августа, 2022 - 17:56:50
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
но в самом верху есть строчка
if (fopen ("spisok5.txt", "r" )!=0)

Которая обозначает открыть файл. И всё, тут никуда ничего не записывается. Ну да ладно, вам виднее.
 Цитата:
а потому что блт блокнот не в той кодировке работал

Начиная с win10, а может раньше, в блокноте кодировка utf8 без bom.
 
 Top
Martin
Отправлено: 10 Августа, 2022 - 13:24:42
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 121
Дата рег-ции: Июнь 2022  
Репутация: 1




Zireael ,
Помогите пожалуйста разобраться почему не работает
CODE:
string result;
string text = "^"текст в кавычках^"";
result = utf8toansi(text);
writeclipboard(result);
messagebox(result);
 
 Top
Zireael
Отправлено: 10 Августа, 2022 - 13:53:41
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
почему не работает

Я не дома, проверить код не могу.
Функция utf8toansi в данном случае точно не нужна.
Если в буфер пишет кракозябры, то сначала нужно переключиться на русскую раскладку.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by