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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2008, 20:25   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Печаль SaveDialog не сохраняет правильно

Что здесь не так? Используя такой код
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.Execute;
Edit1.Text:=(ExtractFilePath(OpenDialog1.FileName))+(ExtractFileName(OpenDialog1.FileName));
end;

procedure TForm1.Button2Click(Sender: TObject);
var S:TStringList;
begin
S:=TStringList.Create;
S.Add(Label1.Caption);
S.SaveToFile('Link.txt');
S.Free;
end;

end.
файл сохраняется не там где надо. Тоесть он сохраняется там, где был отмечен файл через OpenDialog1. Пример: фаил через OpenDialog1 был отмечен по такому адресу C:\Program Files\Fox\run.exe. А сам файл в который этот адрес записан должен быть сохранён по адресу G:\Project\Link.txt, но этого не просиходит. В итоге файл сохраняется по адресу C:\Program Files\Fox\ что делать как исправить?

Последний раз редактировалось Shouldercannon; 15.06.2008 в 21:32.
Shouldercannon вне форума Ответить с цитированием
Старый 15.06.2008, 20:32   #2
Artificial
Пользователь
 
Аватар для Artificial
 
Регистрация: 03.11.2007
Сообщений: 91
По умолчанию

S.SaveToFile('Link.txt');
Он же у тебя сохраняет в текущий каталог, тот, который был открыт.
SaveToFile указывай еще и путь, куда сохранять
Artificial вне форума Ответить с цитированием
Старый 15.06.2008, 20:41   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Но мне надо чтобы Link.txt сохранялся в папку где находится программа в данном случае Project, а не в папку на которую дан этот линк.
Shouldercannon вне форума Ответить с цитированием
Старый 15.06.2008, 20:44   #4
Artificial
Пользователь
 
Аватар для Artificial
 
Регистрация: 03.11.2007
Сообщений: 91
По умолчанию

Тогда при включении проги определи путь корневой папки - GetDir(0,path);
А потом сохраняй в path + link.txt
Только что в другой теме ответил это: http://programmersforum.ru/showthread.php?t=21779

Последний раз редактировалось Artificial; 15.06.2008 в 20:47.
Artificial вне форума Ответить с цитированием
Старый 15.06.2008, 23:33   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

А можно поподробнее я там намучился что уже голова не варит.
Shouldercannon вне форума Ответить с цитированием
Старый 15.06.2008, 23:49   #6
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Код:
var
ProgramDir: string;

FormCreate
begin
GetDir(0, ProgramDir);
//или ProgramDir:=ExtractFileDir(Application.ExeName);
end;

S.SaveToFile(ProgramDir + '/Link.txt');
Примечания:
1/ не путай понятия Dir и Path, путь в отличие от директории оканчивается слешем '/', именно в этом отличие функций ExtractFileDir, ExtractFilePath и других.

2/ сохраняй или открывай файлы только при положительном выборе в диалогах:
if OpenDialog1.Execute then ...

3/ Зачем тебе SaveDialog если ты потом сохраняешь так: S.SaveToFile('Link.txt'); Используй свойство диалога FileName и все нормально будет, в этом случае никакого пути добавлять не надо.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 16.06.2008, 00:09   #7
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Сообщение

какие сложности:
Код:
procedure TForm1.Button2Click(Sender: TObject);   
var S:TStringList;   
begin  
S:=TStringList.Create;   
S.Add(Label1.Caption);   
S.SaveToFile(ExtractFilePath(ParamStr(0))+'Link.txt');   
S.Free;   
end;
и зачем такие ненужные действия,
Код:
Edit1.Text:=(ExtractFilePath(OpenDialog1.FileName))+(ExtractFileName(OpenDialog1.FileName));
,
Диалог сам даёт полный путь к файлу через: OpenDialog1.FileName.

И вообще лучше так переделать:
Код:
procedure TForm1.Button1Click(Sender: TObject);   
begin  
 if OpenDialog1.Execute then
   Edit1.Text:=OpenDialog1.FileName;   
end;
Alter вне форума Ответить с цитированием
Старый 16.06.2008, 02:14   #8
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Спасибо работает.
Shouldercannon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись из StringGrid в файл при помощи SaveDialog NecroSlider Помощь студентам 5 17.04.2011 18:45
Как сохранить этот рисунок не используя SaveDialog? kadekin Помощь студентам 4 01.08.2008 19:26
Проблема с SaveDialog boostman Общие вопросы Delphi 11 16.06.2008 14:40
программа которая сохраняет текст StringGrid без диалогов KSP БД в Delphi 2 19.09.2007 18:49
Не сохраняет данные в таблицу! frai БД в Delphi 14 15.09.2007 18:58