Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2011, 08:37   #1
Smerch66
Пользователь
 
Регистрация: 22.03.2010
Сообщений: 33
Восклицание Ошибка "Файл не найден" при выборе большого числа файлов

Здравствуйте уважаемые знатоки! Прошу вашей помощи.
При выборе большого количества файлов, с помощью компонента opendialog, выводится ошибка, что какой-либо файл, из выбранных, не найден.
В районе 600 файлов открывает нормально, без ошибок.
Почему так происходит? Как мне преодолеть эту ошибку.
Тут дело в том, что у меня проигрыватель аудиофайлов, и нужно в плейлист загружать ну хотя бы пару тысяч песен.
Smerch66 вне форума Ответить с цитированием
Старый 20.01.2011, 08:56   #2
ben95
Новичок
Джуниор
 
Аватар для ben95
 
Регистрация: 22.12.2007
Сообщений: 204
По умолчанию

Код в студию.
ben95 вне форума Ответить с цитированием
Старый 20.01.2011, 09:30   #3
Smerch66
Пользователь
 
Регистрация: 22.03.2010
Сообщений: 33
По умолчанию

Цитата:
Сообщение от ben95 Посмотреть сообщение
Код в студию.
Какой код? Там одна строка для открытия opendialog.
Открывается opendialog, в нём я выделяю кучу файлов, нажимаю открыть, и не открывает он. ругается. а вот если поменьше выбрать, то всё норм.
Проанализировал, что если имена файлов короткие, то можно больше открыть, чем при длинных именах файлов.
Smerch66 вне форума Ответить с цитированием
Старый 20.01.2011, 09:36   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Скажите хотябы, что за ошибка? Что компилятор выдаёт?
У меня подозрение, что под буфер выделяется мало памяти, такое иногда случается.
Но не проанализировав сообщение компилятора, трудно сказать что-либо более внятное.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 20.01.2011, 09:42   #5
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
По умолчанию

Может быть из-за того что в OpenDialog файлы передаются через TStrings, а его размер ограничен максимальным числом Integer или же параметр Text это тип string и он тоже ограничен каким-то максимальным размером?
Попробуйте посчитать размер OpenDialog1.Files.Text может он окажется 65535...

UPD: Да, скорей всего всё ограничивается размером типа string (если судить по тому что если открывать файлы с короткими именами, то "влезает" больше.
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 20.01.2011, 10:35   #6
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Цитата:
Сообщение от Smerch66 Посмотреть сообщение
В районе 600 файлов открывает нормально, без ошибок.
А на кой нужно одновременно открывать столько файлов ???
Это что - новая разновидность мазохизма ?
Или просто желание напакостить в системе ?
asmodey1 вне форума Ответить с цитированием
Старый 20.01.2011, 12:15   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
нужно в плейлист загружать ну хотя бы пару тысяч песен.
заставлять пользователя выбирать столько файлов?!

SelectDirectory + FindFirst + while + FindNext = узнать все файлы в указанной папке.
как пользоваться
примеры в справке (F1 Delphi Example)
поиск по форуму
google поиск
использовать в любом порядке.

P.S. SelectDirectory есть ДВЕ функции с одинаковым прототипом (delphi7)
uses Qdialog
uses fileCtrl
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 20.01.2011 в 12:29.
evg_m вне форума Ответить с цитированием
Старый 20.01.2011, 14:19   #8
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Сообщение от Smerch66 Посмотреть сообщение
Почему так происходит?
Так захотел Борланд:

Код:
MultiSelectBufferSize = High(Word) - 16;

Цитата:
Сообщение от Smerch66 Посмотреть сообщение
Как мне преодолеть эту ошибку.
Вызвать GetOpenFileName() руками, и задать в nMaxFile буфер побольше.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 20.01.2011, 20:15   #9
Smerch66
Пользователь
 
Регистрация: 22.03.2010
Сообщений: 33
По умолчанию

Цитата:
Вызвать GetOpenFileName() руками, и задать в nMaxFile буфер побольше.
Я немного не понял как пользоваться этой функцией.. Не могли бы вы привести пример кода?
И как потом из этой функции извлечь: имена файлов полные, имена файлов обычные, и путь к директории где они лежат?
Буду очень признателен, если с комментариями напишите.

Последний раз редактировалось Stilet; 20.01.2011 в 20:25.
Smerch66 вне форума Ответить с цитированием
Старый 20.01.2011, 21:13   #10
Ghost of Night
Форумчанин
 
Аватар для Ghost of Night
 
Регистрация: 08.08.2010
Сообщений: 371
По умолчанию

Попробуй драг & дроп юзать
Хакинг - не преступление, а способ выживания.
Ghost of Night вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка "не найден файл vc60.bpl" обьясните Нур C++ Builder 4 22.12.2009 23:12
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder AleksP C++ Builder 7 11.04.2009 13:06
настроить при открытии Excel 2003 в окошке "Тип файлов" вывод пункта "Все файлы (*.*)" по умолчанию? Unior Microsoft Office Excel 2 01.03.2009 02:42