Форум: "Прочее";
Текущий архив: 2010.11.07;
Скачать: [xml.tar.bz2];
ВнизНеясности в формате файла Найти похожие ветки
← →
Sha © (2010-07-21 14:44) [280]> И ее надо будет откуда-то вызвать.
Это просто учебный пример.
Напишешь подыгрывающую программу.
← →
Виталий © (2010-07-21 14:45) [281]А "подыгрывающие" данные случайно сгенерировать что ли, подстроившись под формат?
← →
Sha © (2010-07-21 14:46) [282]> А "подыгрывающие" данные случайно сгенерировать что ли, подстроившись под формат?
Почему бы нет?
Сравнишь свой выход с выходом автора (после замены на AnsiChr)
← →
Виталий © (2010-07-21 14:50) [283]Хорошо, приду домой и попробую.
← →
Виталий © (2010-07-21 14:59) [284]Кстати, такой вот вопрос:
"в Delphi 2009 тип string по умолчанию эквивалентен типу UnicodeString. Кроме того, тип Char по умолчанию - тип WideChar, а тип PChar по умолчанию - PWideChar. "
Я буду использовать юникод-строки. Тогда почему вы говорили об AnsiChr?
← →
Sha © (2010-07-21 15:00) [285]> Anatoly Podgoretsky © (21.07.10 14:22) [266]
> Это так, но ты попробуй это на Д2010
> А то что функция написана неверна, то это не является заслугой автора.
> Он мог бы ее и правильно написать, хотя бы как предложено Chr(Byte(i)) или
Chr(i and 255)
По идее AnsiChr лучше, но вряд ли он мог мог такое предсказать.
← →
Sha © (2010-07-21 15:01) [286]> Виталий © (21.07.10 14:59) [284]
> Тогда почему вы говорили об AnsiChr?
Попробуй сам ответить.
← →
Anatoly Podgoretsky © (2010-07-21 15:02) [287]> Виталий (21.07.2010 14:32:34) [274]
Неправильно, 255 если значия должны быть ограничены (завернуты) на это
значение, поскольку правильно и Chr(Word(x))
← →
Anatoly Podgoretsky © (2010-07-21 15:02) [288]> Виталий (21.07.2010 14:34:36) [276]
Под Виндоус не надо, нет смысла
← →
Виталий © (2010-07-21 15:05) [289]
> ограничены (завернуты)
то есть на and c ним (с 255)?
> Попробуй сам ответить.
Не могу.
← →
Anatoly Podgoretsky © (2010-07-21 15:06) [290]> Виталий (21.07.2010 14:59:44) [284]
А наверно для - AnsiChar = Byte(0..255);
Это понимать надо, а не спрашивать почему, потому что ответом может быть
много и опять упремся в понимание процесса.
← →
Anatoly Podgoretsky © (2010-07-21 15:07) [291]> Sha (21.07.2010 15:00:45) [285]
Я не знаю насчет него, но я такое предсказывал уже в Турбо Паскаль, всегда
приводя к Byte
← →
Anatoly Podgoretsky © (2010-07-21 15:08) [292]> Виталий (21.07.2010 15:05:49) [289]
Завернутя это когда после 255 идет не 256, а ноль, по модулю 256
← →
Виталий © (2010-07-21 15:08) [293]Совершенно вас не понял. Сказано в описании - юникод, мол, по 2 байта символы. Да. А AnsiChar тут причем?
← →
Sha © (2010-07-21 15:10) [294]> Виталий © (21.07.10 15:05) [289]
> Не могу.
Главное простота реализации.
На мой взгляд проще сформировать результат в сырой или в Ansi-строке,
а затем перевести ее в юникод. Может быть, я не прав.
← →
Виталий © (2010-07-21 15:11) [295]The AnsiChar type is used to hold single characters. It is guaranteed to be 8 bits in size.
Логично, что 0-255
← →
Виталий © (2010-07-21 15:12) [296]
> в Ansi-строке
У нее каждый символ - AnsiChar, то есть 1 байт. Есть способ в такой строке хранить двухбайтовые символы?
Сырая строка... Вообще что-то новенькое.
← →
Виталий © (2010-07-21 15:14) [297]
> Есть способ в такой строке хранить двухбайтовые символы?
Понял. Тут не хранение, а конвертация.
← →
Sha © (2010-07-21 15:17) [298]> Есть способ в такой строке хранить двухбайтовые символы?
Ага, в двух байтах один символ, как автор.
← →
Виталий © (2010-07-21 15:19) [299]
>
> Ага, в двух байтах один символ, как автор.
Судя по этому, нифига я не понял. Не вижу я, не понимаю, как он это делает. Вижу только странное соединение строк и все.
← →
Sha © (2010-07-21 15:22) [300]Сделай по-своему.
← →
Виталий © (2010-07-21 15:27) [301]Я не умею. Не знаю, как можно пихнуть в два байта 1 символ, если эти два байта каждый должен иметь символ. Сделать один байт нулевым? Или при чтении из каталоговой записи кидать все в строку, которая примет это как символы с разными кодами, а при чтении из строки как-то складывать эти коды и получать из них результирующий? Откройте уже путь, я не понимаю, как решить эту проблему.
← →
Sha © (2010-07-21 15:35) [302]> Виталий © (21.07.10 15:27) [301]
По-своему, как ты хотел, просто сцепляя юникодовые части строки.
Если скажу подробнее, то тебе писать ничего не останется.
← →
Виталий © (2010-07-21 15:37) [303]
> Если скажу подробнее, то тебе писать ничего не останется
То есть я никогда не пойму ни метод автора кода, ни метод, как в анси-строку записывать юникод.
← →
Sha © (2010-07-21 15:38) [304]Для реализации [302] этого не требуется.
А после этого увидишь, что там и понимать-то нечего.
← →
RWolf © (2010-07-21 15:39) [305]открой виндовую Таблицу символов, и всё станет понятно.
← →
Виталий © (2010-07-21 15:40) [306]Мне кажется сомнительным, что написав одну программу можно понять два совершенно неясных мне метода.
← →
Виталий © (2010-07-21 15:41) [307]
> открой виндовую Таблицу символов, и всё станет понятно.
Открыл. Наверное, я просто не понимаю ваших мыслей, вы говорите намеками.
← →
RWolf © (2010-07-21 15:43) [308]
> Виталий © (21.07.10 15:41) [307]
это наглядная иллюстрация того, как одному символу соответствуют два байта.
← →
Sha © (2010-07-21 15:43) [309]> Виталий © (21.07.10 15:40) [306]
Не пытайся накапливать знания впрок методом "в ширину",
задавая кучу вопросов, слабосвязанных с поставленной задачей.
Это тебе только мешает
← →
Виталий © (2010-07-21 15:44) [310]
>
> это наглядная иллюстрация того, как одному символу соответствуют
> два байта.
Мне это и так было ясно, скажем, кириллическая А как 0410. А теперь нужно два этих байта записать в анси-строку. Но для анси-строки 04 и 10 будут двумя разными символами.
← →
Виталий © (2010-07-21 15:46) [311]
> задавая кучу вопросов, слабосвязанных с поставленной задачей.
Хорошо. Решу задачу и, возможно, вы мне наконец откроете секрет.
← →
Sha © (2010-07-21 15:47) [312]> Виталий © (21.07.10 15:46) [311]
Этого не потребуется, поверь. Сам поймешь.
← →
RWolf © (2010-07-21 15:48) [313]
> Виталий © (21.07.10 15:44) [310]
в простейшем случае — просто присвоить юникодную строку анси-строке. Дельфи сам сконвертирует символы.
← →
Виталий © (2010-07-21 15:50) [314]
> Этого не потребуется, поверь. Сам поймешь.
У меня просто в голове уже возникло представление о том, как я объявляю юникод строку, да буду читать ее через BlockRead. А вот представления о тех задачах не возникло)
← →
Anatoly Podgoretsky © (2010-07-21 15:52) [315]> Виталий (21.07.2010 15:08:53) [293]
А AnsiChar один байт.
← →
Anatoly Podgoretsky © (2010-07-21 15:53) [316]> Sha (21.07.2010 15:10:54) [294]
По уму в 2010 нельзя использовать AnsiString, обязательно RawByteString,
если конечно клиенту это что то говорит. Иначе возможны побочные эффекты
← →
Виталий © (2010-07-21 15:54) [317]
> просто присвоить юникодную строку анси-строке
тут юникодной строки нет, а есть набор байт, которые хотелось бы прочесть в анси. Если я и так в юникод прочитаю, то смысла уже нет.
← →
Anatoly Podgoretsky © (2010-07-21 15:55) [318]> Виталий (21.07.2010 15:12:56) [296]
String может хранить что угодно, хоть код программы. Так что двубайтные
символы тоже можно. Только помнить о побочных эффектах.
← →
Anatoly Podgoretsky © (2010-07-21 15:56) [319]> Виталий (21.07.2010 15:19:59) [299]
У автора нет AnsiString они тогда еще не существовали.
← →
Sha © (2010-07-21 15:57) [320]> Anatoly Podgoretsky © (21.07.10 15:53) [316]
> Иначе возможны побочные эффекты
Разумеется, сырая предпочтительнее, но можно и Ansi,
если данные пересылать при помощи Move.
Страницы: 1 2 3 4 5 6 7 8 9
10 11 12 вся ветка
Форум: "Прочее";
Текущий архив: 2010.11.07;
Скачать: [xml.tar.bz2];
Память: 1.06 MB
Время: 0.077 c