Res5 писал(а):CE
Res5 писал(а):как байты в строку перевести?
ReadProcessMemory(hProcess, ptr(ChatStartAddr), @start_addr, sizeof(start_addr), BytesCountOfRead);
ReadProcessMemory(hProcess, ptr(ChatNumberAddr), @ChatLen, sizeof(ChatLen), BytesCountOfRead);
for strNo := 0 to ChatLen-1 do
begin
str[0] := #0;
i := 0;
try
ReadProcessMemory(hProcess, ptr(start_addr + ((StrNo * $1C) + $8)), @addr, sizeof(addr), BytesCountOfRead);
if addr <> 0 then
repeat
ReadProcessMemory(hProcess, ptr(addr), @ch, 2, BytesCountOfRead);
str[i] := ch;
addr := addr + 2;
inc(i);
until (ord(ch) = 0) or (i >= High(str));
except
end;
if i >= 1 then
str[i] := #0;
st := Str;
Chat.Add(st);
end;
Res5 писал(а):Процесс игры, юникод
Res5 писал(а):рабочая версия, но к соажалению это делфи(
Res5 писал(а):Статью я смотрел, только всеравно не понял как она поможет мне сванговать код.
Хакер писал(а):Статья не содержит простого ответа на вопрос, а содержит пищу для ума. Которую нужно будет переварить.
Лучше свой вариант приведи. Тот код, который у тебя неправильно выводит строку.Res5 писал(а):рабочая версия, но к соажалению это делфи(
В принципе да. Такое чтение из чужого процесса будет сопровождаться кучей не нужных накладных расходов. Проще за один раз скопировать всю строку.Qwertiy писал(а):По-моему, читать блоками по 2 байта всё-таки извращение...
Qwertiy писал(а):По делфи-коду видно, что читается юникодная (UTF-16) строка, завершаемая нулём.
ger_kar писал(а):Проще за один раз скопировать всю строку.
Хакер писал(а):и не имеет значения, что делает какой-то код, который ему удалось найти, даже если кому-то (включая автора) кажется, что код далает именно то, что надо.
Хакер писал(а):Даже если просто написать автору правильный код, пока у автора не возникнет понимания картины, это будет сродни обмену заклинаниями.
Не факт. Вообще можно провести эксперимент и точно это выяснить, но это сможет сделать только сам автор. Самое лучшее в этом случае посмотреть на его код и наверняка станет понятно, что он делает не так.Qwertiy писал(а):Эм.. Длина неизвестна.
ger_kar писал(а):Не факт.
Qwertiy писал(а):весьма сложно, поскольку там UTF-16.
Qwertiy писал(а):Согласен что не факт, но делфятина читает до завершающего нуля...
Хакер писал(а):Похоже, ты сам не знаешь разницы между UTF-16 и UCS-2?
What is the difference between UCS-2 and UTF-16? писал(а):UCS-2 is obsolete terminology which refers to a Unicode implementation up to Unicode 1.1, before surrogate code points and UTF-16 were added to Version 2.0 of the standard. This term should now be avoided.
UCS-2 does not define a distinct data format, because UTF-16 and UCS-2 are identical for purposes of data exchange. Both are 16-bit, and have exactly the same code unit representation.
Sometimes in the past an implementation has been labeled "UCS-2" to indicate that it does not support supplementary characters and doesn't interpret pairs of surrogate code points as characters. Such an implementation would not handle processing of character properties, code point boundaries, collation, etc. for supplementary characters.
ger_kar писал(а):А как быть с этим?
Да и в @ChatLen возвращается длина, поэтому можно прочитать за раз весь буфер, а не устраивать чтение по 2 байта.Qwertiy писал(а):Вроде как проверка, что оно влазиет в ту строку
Qwertiy писал(а):Гугл по UCS-2 первой же показывает статью википедии об UTF-16, там есть ссылка на
А если делать наоборот и строку UCS-2 копировать в UTF-16 совместимый буфер, то все будет хорошо и ничего не надо мудрить?Хакер писал(а):Поэтому, если тебе нужна строка в UCS-2, ты не можешь просто взять, спрятать голову в песок, скопировать UTF-16 строку в UCS-2-совместимый буфер и притвориться, что всё хорошо.
Хакер писал(а):Всё правильно. UCS-2 — более простая штука, нежели UTF-16.
Поэтому, если тебе нужна строка в UCS-2, ты не можешь просто взять, спрятать голову в песок, скопировать UTF-16 строку в UCS-2-совместимый буфер и притвориться, что всё хорошо.
Хакер писал(а):тогда как в UTF-8
Qwertiy писал(а):Т. е. ты утверждаешь, что на www.unicode.org написана неправда?
Qwertiy писал(а):При чём тут вообще UTF-8?
Сейчас этот форум просматривают: Google-бот и гости: 50