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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2009, 07:07   #1
annaangel
Пользователь
 
Регистрация: 15.09.2009
Сообщений: 10
По умолчанию SaveToFile - в чем ошибка?

Доброго всем времени суток!

Возникла такая проблема: я создаю процедуру для сохранения в файл...

Код:
procedure SaveTextFile ();
var SaveDialog: TSaveDialog;
begin

  SaveDialog:= TSaveDialog.Create(SaveDialog);

  if SaveDialog.Execute then
  begin
    MainForm.RichEdit1.Lines.SaveToFile(SaveDialog.FileName);
  end;

  SaveDialog.Free;
... при ее вызове delphi выдает ошибку "Acess violation at address...". В чем здесь косяк?
annaangel вне форума Ответить с цитированием
Старый 05.11.2009, 08:08   #2
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
По умолчанию

ммм... не так это делается, воспользуйтесь предварительно-созданным Сейвдиалогом(Design time), перетащите на форму SaveDialog, с панели Dialogs, потом(если не менять имя диалога по дефолту будет SaveDialog1)
Код:
 
 if SaveDialog.Execute then
RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.

Последний раз редактировалось HellMercenariess; 05.11.2009 в 08:12.
HellMercenariess вне форума Ответить с цитированием
Старый 05.11.2009, 08:11   #3
annaangel
Пользователь
 
Регистрация: 15.09.2009
Сообщений: 10
По умолчанию

Спасибо, я уже придумала. Вместо

Код:
SaveDialog:= TSaveDialog.Create(SaveDialog);
пишем

Код:
SaveDialog:= TSaveDialog.Create(Application);
и все прекрасно работает...
annaangel вне форума Ответить с цитированием
Старый 05.11.2009, 08:14   #4
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
По умолчанию

не понятно откуда такая страсть к Run-time Creation ?
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
HellMercenariess вне форума Ответить с цитированием
Старый 05.11.2009, 08:20   #5
annaangel
Пользователь
 
Регистрация: 15.09.2009
Сообщений: 10
По умолчанию

Ну, насколько мне известно, разницы особой нет - кидать компонент на форму или создавать его (во всяком случае мне так на этом форуме объяснили)... Или все-таки есть?
annaangel вне форума Ответить с цитированием
Старый 05.11.2009, 08:28   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не понятно откуда такая страсть к Run-time Creation ?
А что в этом плохого?
Цитата:
annaangel
Вообще обычно создают с привязкой на тот контейнер в котором создается а не к аппликации:
Код:
SaveDialog:= TSaveDialog.Create(Self);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2009, 08:40   #7
annaangel
Пользователь
 
Регистрация: 15.09.2009
Сообщений: 10
По умолчанию

Цитата:
Вообще обычно создают с привязкой на тот контейнер в котором создается а не к аппликации:
Код:

SaveDialog:= TSaveDialog.Create(Self);
Да, обычно я так и делаю, но вариант с Self в процедуре почему-то не прокатывает... Кстати, в той же программе в процедуре открытия файла у меня прописано:

Код:
OpenDialog:= TOpenDialog.Create(OpenDialog);
И там все работает... Непонятно...
annaangel вне форума Ответить с цитированием
Старый 05.11.2009, 08:44   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Попробуй
Код:
OpenDialog:= TOpenDialog.Create(nil);
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 05.11.2009, 08:48   #9
annaangel
Пользователь
 
Регистрация: 15.09.2009
Сообщений: 10
По умолчанию

Да, так тоже работает, спасибо! А, кстати, почему не надо привязывать к Application?
annaangel вне форума Ответить с цитированием
Старый 05.11.2009, 08:58   #10
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Визуальные компоненты лучше привязывать к той форме, на которой они будут потом отображаться. Диалоги тоже лучше там, где будут вызваться.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем ошибка? hitman12 Паскаль, Turbo Pascal, PascalABC.NET 13 04.11.2009 12:38
В чем ошибка gheorge1989 Microsoft Office Access 8 27.10.2009 22:45
В чем ошибка... Эдвин Галстук Паскаль, Turbo Pascal, PascalABC.NET 3 25.10.2009 20:01
В чем ошибка? Smartbass Паскаль, Turbo Pascal, PascalABC.NET 1 28.05.2009 21:55
в чем ошибка? Lonix Общие вопросы Delphi 2 24.03.2007 09:41