Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FileName, в файле 
:(
    Опции темы
z-END
  Дата 20.6.2004, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Собственно имеется запись, одно из ее полей String[255] в которой хранится имя файла...
Отсюда возникает разумный вопрос, какова вероятность того что имя файла превысит 255 символов?
ЗЫ у себя на компе ненашел ниодного файла длиннее 255 символов. у кого нибудь есть? smile.gif



--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Serggggg
Дата 20.6.2004, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 12.12.2003
Где: Донецк, Украина

Репутация: нет
Всего: нет



Само имя файла, ИМХО, вряд ли превысит 255 символов - это надо постараться задать FileName в размере более 1,5 SMS-сообщения. А вот если указывается полный путь к файлу, да еще и неплохая вложенность папок (уровней так 5-6) - может и не поместиться. Хороший пример - резалка CD - Nero BurningRom - он ругается, когда полный путь к файлу превышает 255 символов.
--------------------
C уважением, Serggggg.
PM MAIL ICQ   Вверх
z-END
Дата 20.6.2004, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



хм, ну я вообще-то об этом и говорил полное имя файла..
Если отметать сеть, просто на StandAlone-компе часто ли бывают такие случаи?!


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Петрович
Дата 20.6.2004, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 25
Всего: 55



Цитата
Если отметать сеть, просто на StandAlone-компе часто ли бывают такие случаи?!

Да, особенно, если HDD большой и информация на нем хорошо структуированна (много вложенных папок, имена несут смысловую нагрузку поэтому длинные).



--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
Cheba
Дата 20.6.2004, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: 1
Всего: 62



А еще можно превысить если использовать монтирование дисков в папки под NTFS. Особенно если к самой папке путь в символов 100.
PM MAIL ICQ   Вверх
<Spawn>
Дата 20.6.2004, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



nJIaKca.spb Так что используй просто string - записывать такую строку не намного сложнееsmile.gif


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Serggggg
Дата 20.6.2004, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 12.12.2003
Где: Донецк, Украина

Репутация: нет
Всего: нет



nJIaKca.spb, а увеличить размер поля записи можно? Или String[255]
- это принципиально?
--------------------
C уважением, Serggggg.
PM MAIL ICQ   Вверх
<Spawn>
Дата 20.6.2004, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Serggggg string[255] - это, насколько я знаю, старые Паскалевские строки, предельный размер которых равен 255, т.к. записывается в хедере строки, т.е. в одном байте. А если использовать string, то будет использоваться указатель на строку -> запись чуть услознится, но зато размер до 2ГБ можешь писатьsmile.gif


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
-=::BlackCat::=-
Дата 20.6.2004, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 12.7.2003
Где: растёт анаша?

Репутация: 1
Всего: 6



таких случеев много, по крайне мере у меня навалом


--------------------
-=::BlackCat::=-user posted image

такой дуратцкий аватар потому как мой 100х100, а такие подгрузить нелзя, движок форума чо сам не может его переделать??  гррр, админ, форум косячит  
PM MAIL ICQ   Вверх
Alex
Дата 20.6.2004, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



А можно просто хранить короткий путь к файлу.

Код
function sfn(const LongName: String): String;
// Возвращает LongFileName преобразованное в соответствующее короткое имя
var i :Integer;
begin
 SetLength(Result,Length(LongName));
 i := GetShortPathName(pChar(LongName),pChar(Result),Length(Result));
 if  i > Length(Result)  then begin
   SetLength(Result,i);
   i := GetShortPathName(pChar(LongName),pChar(Result),Length(Result));
 end;
 SetLength(Result,i);
end;
// -----------------------------------------------------------------
function lfn(const ShortName: String): String;
// Возвращает ShortFileName преобразованное в соответствующее длинное имя
var
 GetLongPathName: function(lpszShortPath: PChar; lpszLongPath: PChar;
                           cchBuffer: DWORD): DWORD; stdcall;
 h: THandle;
 i: Integer;
begin
 Result:= ShortName;
 if Result = '' then Exit;
 h := GetModuleHandle(kernel32);
 if h = 0 then Exit;
 @GetLongPathName := GetProcAddress(h, 'GetLongPathNameA');
 if not Assigned(GetLongPathName) then Exit;
 SetLength(Result, MAX_PATH);
 i:= GetLongPathName(PChar(ShortName), PChar(Result), Length(Result));
 if i = 0 then Exit;
 SetLength(Result, i);
end;


Это сообщение отредактировал(а) alex-co - 20.6.2004, 12:06


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
z-END
Дата 20.6.2004, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Ну я так и поступил, создал две переменные:
Код
Path: string[255];
LogPath: string[255];
function GetPath:String;
function Setpath(const APath:String);
если длинна больше 255 то первые 255 заносятся в переменную Path, а остаток в LongPath, функция FullPath собирает ето чудо, а SetPath соответственно записывает..
ЗЫ надеюсь больше 510 символов таких путей уже в природе нетsmile.gif


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
youri
Дата 21.6.2004, 04:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: нет
Всего: 16



А почему ты не хочешь использовать string вместо string[255]?
PM   Вверх
Medved
Дата 21.6.2004, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Действительно, а чем тебе не нравяться динамические строки AnsiString? К тому же они совместимы с функциями API Win32. Если я не ошибаюсь, их длина может составлять до 2 Гб. А если ты задаешь длину строку не превышающую 255 символов, (т.е. String[255]) то дельфи воспринимает эту строку как ShortString.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Alex
Дата 21.6.2004, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



На сколько я понимаю, человек пишет данные в типизированный файл и по этому просто не может использовать String


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Петрович
Дата 21.6.2004, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 25
Всего: 55



А еще, можно создать array [1..2048] of char hehe.gif , или массу других извращений hehe.gif hehe.gif hehe.gif



--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1061 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.