![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
Собственно имеется запись, одно из ее полей String[255] в которой хранится имя файла...
Отсюда возникает разумный вопрос, какова вероятность того что имя файла превысит 255 символов? ЗЫ у себя на компе ненашел ниодного файла длиннее 255 символов. у кого нибудь есть? -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| Serggggg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.12.2003 Где: Донецк, Украина Репутация: нет Всего: нет |
Само имя файла, ИМХО, вряд ли превысит 255 символов - это надо постараться задать FileName в размере более 1,5 SMS-сообщения. А вот если указывается полный путь к файлу, да еще и неплохая вложенность папок (уровней так 5-6) - может и не поместиться. Хороший пример - резалка CD - Nero BurningRom - он ругается, когда полный путь к файлу превышает 255 символов.
--------------------
C уважением, Serggggg. |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
хм, ну я вообще-то об этом и говорил полное имя файла..
Если отметать сеть, просто на StandAlone-компе часто ли бывают такие случаи?! -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Да, особенно, если HDD большой и информация на нем хорошо структуированна (много вложенных папок, имена несут смысловую нагрузку поэтому длинные). -------------------- Все знать невозможно, но хочется |
|||
|
||||
| Cheba |
|
|||
![]() pointless one ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1777 Регистрация: 27.11.2003 Где: /dev/null Репутация: 1 Всего: 62 |
А еще можно превысить если использовать монтирование дисков в папки под NTFS. Особенно если к самой папке путь в символов 100.
|
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
nJIaKca.spb Так что используй просто string - записывать такую строку не намного сложнее
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| Serggggg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.12.2003 Где: Донецк, Украина Репутация: нет Всего: нет |
nJIaKca.spb, а увеличить размер поля записи можно? Или String[255]
- это принципиально? --------------------
C уважением, Serggggg. |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Serggggg string[255] - это, насколько я знаю, старые Паскалевские строки, предельный размер которых равен 255, т.к. записывается в хедере строки, т.е. в одном байте. А если использовать string, то будет использоваться указатель на строку -> запись чуть услознится, но зато размер до 2ГБ можешь писать
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| -=::BlackCat::=- |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 12.7.2003 Где: растёт анаша? Репутация: 1 Всего: 6 |
таких случеев много, по крайне мере у меня навалом
-------------------- -=::BlackCat::=- такой дуратцкий аватар потому как мой 100х100, а такие подгрузить нелзя, движок форума чо сам не может его переделать?? гррр, админ, форум косячит |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
А можно просто хранить короткий путь к файлу.
Это сообщение отредактировал(а) alex-co - 20.6.2004, 12:06 -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
Ну я так и поступил, создал две переменные:
ЗЫ надеюсь больше 510 символов таких путей уже в природе нет -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: нет Всего: 16 |
А почему ты не хочешь использовать string вместо string[255]?
|
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Действительно, а чем тебе не нравяться динамические строки AnsiString? К тому же они совместимы с функциями API Win32. Если я не ошибаюсь, их длина может составлять до 2 Гб. А если ты задаешь длину строку не превышающую 255 символов, (т.е. String[255]) то дельфи воспринимает эту строку как ShortString.
-------------------- |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
На сколько я понимаю, человек пишет данные в типизированный файл и по этому просто не может использовать String
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
А еще, можно создать array [1..2048] of char
-------------------- Все знать невозможно, но хочется |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Во, во, Петрович как всегда выкрутился
-------------------- |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
Типизированный файл - это хорошо(для новичка) и плохо(для реализации) - Но это моё мнение. В свое время столько по имел с "Типизированными файлами" проблем. Поэтому лудше используй String и свои обработчики записи и считывания, не забудь записывать в файл версию файла(т.е. формата данных в файле). -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
я бы сказал, как всегда попал в точку -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Наверное не донес Правильнее конечно будет наладить нормальную запись AnsiString. И вообще, лучше иметь не запись, а объект который умеет сам себя писать и читать. Причем, как правильно отметил Girder, в начало файла надо писать версию его структуры, тогда, при дальнейшем развитии программы не будет проблем с чтением "старых" файлов. -------------------- Все знать невозможно, но хочется |
|||
|
||||
| z-END |
|
||||||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
Петрович про R/W объектов это хорошо когда объект сам по себе... а вот если он является частью части динамического массива, например:
то запись/чтение такого объекта "немного" усложнится... может конечно сказывается мой дурной тон программирования, но я очень часто использую такой вид структуры. Когда объект содержит текстовую информацию, и известно, что его длинна влегкую привысит 255 символов, то тогда приходится использвать нетипизированный файл и ф-цию BlockWrite, но это в свою очередь влечет за собой то что в таком случае приходится все properties объекта записывать и считывать "вручную" (BlockRead - BlockWrite) что неочень удобно, т.к. в случае если мне вдруг понадобилось добавить какое ни будь свойство в объект, то приходится переписывать заново процедуру чтения/записи... Согласитесь проще использовать Record и записать в такой-же нетипизированный файл, но таким способом:
а считывать так:
и в этом случае уже не надо следить за тем какие данные используются (в ф-ции чтения/записи) а какие еще нет.. -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
||||||
|
|||||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Дабы не развивать здесь дисскусию о том кто как пишет, я соглашусь что приведенный выше способ тоже имеет право на жизнь. Хотя я предпочитаю объекты хранить не в массивах, а в коллекциях, ... ... ...
-------------------- Все знать невозможно, но хочется |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Может быть я не понял ответа, но хотел бы заметить, что объекты нельзя записывать в типизированный файл. Если конечно речь шла об этом. -------------------- |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: нет Всего: 454 |
Например у меня в "E:\Documents and Settings\Администратор\Мои документы" достаточно развесистая клюква подкаталогов с весьма некороткими русификованными названиями, документы тоже именуются не "DOC1.RTF" - так что там полные имена по 300-500 байт сплошь и рядом... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Петрович |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Тут взглянул наверх, и обнаружил что тема-то вообще не касалась записи файлов А что касается:
-------------------- Все знать невозможно, но хочется |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |