Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
6-1229185383
ASMiD
2008-12-13 19:23
2010.11.07
компонент для чтения с FTP сервера для Delphi7


2-1281596062
kukuikar
2010-08-12 10:54
2010.11.07
Drag&Drop


15-1280332456
Baks
2010-07-28 19:54
2010.11.07
Как правильно разбить строку?


15-1280262611
Юрий
2010-07-28 00:30
2010.11.07
С днем рождения ! 28 июля 2010 среда


15-1280345181
turbouser
2010-07-28 23:26
2010.11.07
Еще раз о цензуре - 3





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский