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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2009, 21:02   #1
dimok-13
Новичок
Джуниор
 
Регистрация: 12.11.2009
Сообщений: 1
По умолчанию

Здравствуйте. Извините за, может быть, глупый вопрос.
Почему не работает код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
ListBox1.Items.Add(OpenDialog1.FileName);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ListBox1.Items.SaveToFile('Save.txt');
end;
Файл save.txt после закрытия остается пустым.

Последний раз редактировалось Stilet; 23.11.2009 в 09:28.
dimok-13 вне форума Ответить с цитированием
Старый 20.11.2009, 18:12   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

попробуй в savetofile() указать полный путь

savetofile('d:\myprog\save.txt');

или поищи файл save.txt в тех каталогах куда заходил по кликам Button1
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 20.11.2009 в 18:16.
evg_m вне форума Ответить с цитированием
Старый 20.11.2009, 18:16   #3
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
if not OpenDialog1.Execute then exit;//Только так
ListBox1.Items.Add(OpenDialog1.FileName);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ListBox1.Items.SaveToFile(extractfilepath(paramstr(0))+'Save.txt');//Надо указывать полный путь
end;
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 20.11.2009, 18:43   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Совершенно необязательно.
ListBox1.Items.SaveToFile('Save.txt ') и так запишет файл в каталог с проектом.
mihali4 вне форума Ответить с цитированием
Старый 22.11.2009, 16:24   #5
evgenidem
Опытный
Пользователь
 
Регистрация: 19.06.2009
Сообщений: 12
По умолчанию

Наиболее оптимальным будет ListBox1.Items.SaveToFile(ExtractFi leName(Application.ExeName)+'Save.t xt')

Если не сохраняется, то попробуйте сохранить проект в другое место. Так тоже иногда бывает.
evgenidem вне форума Ответить с цитированием
Старый 22.11.2009, 21:09   #6
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,051
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Совершенно необязательно.
ListBox1.Items.SaveToFile('Save.txt ') и так запишет файл в каталог с проектом.
mihali4 - в этом случае файл создается на диске/в каталоге из которого вы выбрали последний файл для добавления в ListBox (Если последний добавляемый файл был D:\temp\temp.txt то и файл save сохранится в каталог D:\temp\, а не в каталоге с программой)

evgenidem Исходя из вашего примера
Код:
ListBox1.Items.SaveToFile(ExtractFileName(Application.ExeName)+'Save.txt')
...тоже самое что и с примером mihali4а, только к названию сохраняемого файла прибавляется и название исполняемого файла.
Project1.exeSave.txt

Вот код russian-stalker работает !!!
Хотя предложу от себя
Код:
ListBox1.Items.SaveToFile(ExtractFilePath(Application.ExeName)+ 'Save.txt')

Последний раз редактировалось Noor; 22.11.2009 в 21:17.
Noor вне форума Ответить с цитированием
Старый 22.11.2009, 22:15   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Noor Посмотреть сообщение
mihali4 - в этом случае файл создается на диске/в каталоге из которого вы выбрали последний файл для добавления в ListBox (Если последний добавляемый файл был D:\temp\temp.txt то и файл save сохранится в каталог D:\temp\, а не в каталоге с программой)
С чего вы взяли?
Я уж решил, что начинаю сходить с ума...
Создал проектик, две кнопки и листбокс.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('C:\Intel\DBF.txt');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ListBox1.Items.SaveToFile('000.txt');
end;
Так вот, файл '000.txt' сохраняется в каталоге с проектом (D:\Borland\Delphi7\Projects), а не на диске С...
Можете проверить.

З.Ы.
Цитата:
Скорее всего есть зависимость от того каким методом идет заполнение ListBox.
Согласен.

Последний раз редактировалось mihali4; 22.11.2009 в 23:25.
mihali4 вне форума Ответить с цитированием
Старый 22.11.2009, 22:52   #8
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,051
По умолчанию

Я тоже проверил код который Вы предоставили в посте #4
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
ListBox1.Items.Add(OpenDialog1.FileName);
end;
//------------------
procedure TForm1.Button2Click(Sender: TObject);
begin
ListBox1.Items.SaveToFile('Save.txt');
end;
end.
и как результат, файл save создается на диске/в каталоге из которого вы делали поледнее добавление значения в ListBox.
Скорее всего есть зависимость от того каким методом идет заполнение ListBox. Вот Вы его загрузили из файла, а вы попробуйте заполнить его методом топикстартера....через
Код:
if OpenDialog1.Execute then
ListBox1.Items.Add(OpenDialog1.FileName);

Последний раз редактировалось Noor; 22.11.2009 в 22:55.
Noor вне форума Ответить с цитированием
Старый 23.11.2009, 08:33   #9
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Для Михалыча

Если открывать файл через OpenDialog и не задан полный путь то сохранение идёт в каталог который был выбран в OpenDialog а если открыть вашим способом (Пост №7) то будет так как Вы пишите
SERG1980 вне форума Ответить с цитированием
Старый 23.11.2009, 09:02   #10
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Есть такая штука как "Current Directory". По умолчанию это папка с исполняемым приложением. Если запускать программу через ярлык, то там в свойствах эту папку при загрузке можно изменить, т.е. уже при запуске программы она не будет соответствовать папке с программой. Так же все стандартные виндовые диалоги (OpenDialog, SaveDialog,...) меняют эту самую "текущую папку" на свою. Сохранение вида ListBox1.Items.SaveToFile('Save.txt '); запишет содержимое в файл: CurrentDirectory / Save.txt. Так же могут быть грабли при печати. Есть так называемые виртуальные принтеры, которые через стандартный диалог запрашивают у пользователя имя файла для сохранения отчёта. В общем, эта самая папка может измениться практически в любом месте и потому надеяться на то, что она соответствует папке с программой, не стоит. Лучше указывать полный путь, посредством приведённых выше примеров с ParamStr(0) и Application.ExeName.
pu4koff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопрос про поиск в ListBox [C++ Builder] getUp Помощь студентам 0 04.10.2009 14:46
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
У меня вопрос про базы данных,а точнее про таблицы!!! Alexij Общие вопросы Delphi 1 13.04.2008 23:24
Вопрос по ListBox Rahim1993 Общие вопросы Delphi 2 17.01.2008 20:04
Про ListBox AlexMori Общие вопросы Delphi 2 09.01.2008 16:51