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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задача на сообразительность 
:(
    Опции темы
Alex
Дата 13.9.2005, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Не запуская Delphi скажите, что будет на экране после выполнения кода:
Код

procedure TfrmMain.Button1Click(Sender: TObject);
begin
  SaveDialog1.FileName:= '1/test.txt';
  SaveDialog1.Execute;
end;


PS:
Диалог имеет настройки по умолчанию.


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


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 01:26
  Вверх
Alex
Дата 13.9.2005, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



smile Еще какие будут мнения?


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


Inspired =)
***


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

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



Ошибка должна быть, если файл не будет существовать. smile
Добавлено @ 15:10
А он и так не существует, путь неверный. smile
Добавлено @ 15:11
Аж в Delphi страшно смотреть правду... smile


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
~FoX~
Дата 13.9.2005, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


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

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



Ничего не будет - строка не соответствует OPENFILENAME структуре, функция GetSaveFileName вернет какой то там еррор и SaveDialog1.Execute не выполниться.
Только я прикола не понял... smile


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Quadr0
Дата 13.9.2005, 16:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 01:26
  Вверх
~FoX~
Дата 13.9.2005, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


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

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



Quadr0
Точно не помню но по вроде в структуру передается lpstrfile в которой разделитель может быть только '\' или '.' и еще какойто если MultySelect есть. Могу ошибаться конечно. Вобщем если путь указан не верно, то вызывается CommDlgExtendedError и это, типа опа приплыли - никаких вам диалогов. smile
За подробностями в МСДН, мне лениво искать сегодня.

Это сообщение отредактировал(а) ~FoX~ - 13.9.2005, 16:48


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Akella
Дата 13.9.2005, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



исключительная ситуация, что-то типа Cannot create file
PM MAIL   Вверх
Alex
Дата 13.9.2005, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ладно, дело было так. Ваш покорный слуга решил сегодня в 10 утра проверить ключевые моменты работы программы, которую сегодня заказчику показывать нужно было. Одним из таких моментов является экспорт отчетных документов в разные форматы, Проверяю, мне показывают форму настройки экспорта и по ее закрытию должен показываться пресловутый SaveDialog, но этого почему-то не происходит. Генератор отчета и его функции экспорта я использую FastReport 3, чертыхаясь, лезу в исходники (благо есть), ставлю точки останова и начинаю офигевать. Доходит до метода SaveDialog1.Execute, идет на его выполнение и тут же не показывая диалога вываливается с отрицательным результатом. 4 часа длятся пляски с бубном и ощущение, что крыша сейчас уедет, т.к. понять сие действие просто не реально. Пробуются все теории, которые только могли придти ко мне в голову и голову Петровичу. Результат ноль. В три часа путем уже невероятных шаманских действий замечаю, что единственную настройку SaveDialog, которую делают разработчики FR это передача названия файла по умолчанию, смотрю, что же там хранится. По совершенно глупейшей ошибке в путь попадает "/". Каким образом FR загружал шаблон отчета в пути, которого был "/" я не понял досих пор, но то, что SaveDialog даже не ругается на такой путь, а просто грохается это кошмар, он даже в GetLastError возвращает 0. Бардак в общем smile


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


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Мда... Бывает же smile

Цитата(Alex @ 13.9.2005, 20:36)
Каким образом FR загружал шаблон отчета в пути, которого был "/" я не понял досих пор
Хмм... Странно, но CreateFile спокойно съедает такие пути, можно работать с таким именем... В MSDN же поэтому поводу ничего не нашел, только что имя файла не должно содержать слэш...

Цитата(Alex @ 13.9.2005, 20:36)
он даже в GetLastError возвращает 0
А CommDlgExtendedError возвращает FNERR_INVALIDFILENAME...


--------------------
С уважением, г-н Посол.
PM   Вверх
Alex
Дата 13.9.2005, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(p0s0l @ 13.9.2005, 22:33)
А CommDlgExtendedError возвращает FNERR_INVALIDFILENAME

Буду знатьт. Спасибо
Добавлено @ 21:53
Цитата(p0s0l @ 13.9.2005, 22:33)
Хмм... Странно, но CreateFile спокойно съедает такие пути, можно работать с таким именем... В MSDN же поэтому поводу ничего не нашел, только что имя файла не должно содержать слэш...

Самое странное, что я в FR по ошибке подавал "E:\Prog_on_Delphi\Work\Svet\Rep/Склад Товарная накладная.fr3", а правильный путь должен был быть "E:\Prog_on_Delphi\Work\Svet\Rep\Склад Товарная накладная.fr3" и как он открывал этот файл для меня загадка


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


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



А винда какая было?
XP свободно съедает как досявые, так и линуксовые пути.
Прямой слэш имеет явно линуксовое происхождение.
9х явно такой путь не съедят, а XP без проблем.
PM MAIL   Вверх
Alex
Дата 13.9.2005, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Винда ХР SP2 и все обновления, которые доступны на сегодняшний день


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


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Значит нужно в исходняках SaveDialog'a порыться - где-то он неверно строку парсит.
По идее коресь в FR, но это обычная ситуация для времен кросплатформенности.
PM MAIL   Вверх
Alex
Дата 13.9.2005, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А что там особенно ковыряться? SaveDialog они дергают стандартный, а если смотреть его исходники, то там идет самая обыкновенная заполнения массива данных и передача этого массива на вход Win Api функции вызова диалога, а в ней уже и отваливаемся.

А FR, тоже ничего криминального не делает и не парсит:
Код

function TfrxReport.LoadFromFile(const FileName: String;
  ExceptionIfNotFound: Boolean = False): Boolean;
var
  f: TFileStream;
begin
  Clear;
  FFileName := '';
  Result := FileExists(FileName);
  if Result or ExceptionIfNotFound then
  begin
    f := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
    try
      LoadFromStream(f);
      FFileName := FileName;
    finally
      f.Free;
    end;
  end;
end;

Добавлено @ 23:57
На самом деле даже вот такой код:
Код

if FileExists('E:\Prog_on_Delphi\Work\Svet\Rep/Склад Товарная накладная.fr3') then
    ShowMessage('');

возвратит истину. Получается, что FindFirstFile, на котором построена FileExists находит файл и спокойно может с ним работать.


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

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

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

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

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


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

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


 




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


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

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