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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2011, 08:37   #1
amadi
 
Регистрация: 21.01.2011
Сообщений: 5
По умолчанию Сохранение с путем из Edit

Помогите пожалуйста
Как вытащить путь из edit и использовать его для сохранения
Вот код программы
procedure TForm1.Button6Click(Sender: TObject);
var
M, d, p:string;
begin
M:=label6.caption; \\имя файла беру здесь
d:=DateToStr(Now); \\ чтоб к имени прибавлялась дата
p:=edit2.Text; \\ путь к фалу
EF.ActiveWorkbook.SaveAs(p+M+d);
end;
Как сделать так чтобы программа сохраняла фаил с имеющимся путем из Edit, с готовым именем и текущей датой?

Последний раз редактировалось amadi; 26.01.2011 в 08:38. Причина: нехватка данных
amadi вне форума Ответить с цитированием
Старый 26.01.2011, 08:55   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Код:
procedure TForm1.Button6Click(Sender: TObject);
var
 s:string;
begin 
 s:=DateToStr(Now); \\ чтоб к имени прибавлялась дата
 EF.ActiveWorkbook.SaveAs(Form1.Edit.Text + s[1] + s[2] + '_' + s[4] + s[5] + '_' + s[7] + s[8] + s[9] + s[10]); 
end;
при условии, что в Form1.Edit1.Text путь заканчивается символом "\".

Поясняю: тебе не удасться сохранить файл с именем, в котором дата задается в том формате, в котором ее возвращает функция DateToStr(), т.к. Windows считает символ "." недопустимым в имени файла.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 26.01.2011 в 08:58.
artemavd вне форума Ответить с цитированием
Старый 26.01.2011, 09:01   #3
amadi
 
Регистрация: 21.01.2011
Сообщений: 5
По умолчанию

А без "\" никак нельзя, посто в Edit созданый обзор, забивает путь без данного знака, а так работает

Все большое спасибо, разобрался

Последний раз редактировалось artemavd; 26.01.2011 в 10:12.
amadi вне форума Ответить с цитированием
Старый 26.01.2011, 09:57   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
EF.ActiveWorkbook.SaveAs(Form1.Edit .Text + s[1] + s[2] + '_' + s[4] + s[5] + '_' + s[7] + s[8] + s[9] + s[10]);
OMFG!

Код:
procedure TForm1.Button6Click(Sender: TObject);

  // Добавляет к имени файла приписку
  function AddPostfixToFileName(const AFileName, APostfix: String): String;
  var
    Ext: String;
  begin
    // Сохранили расширение 'Workbook1.xls' -> '.xls'
    Ext    := ExtractFileExt(AFileName);
    // Откусили расширение 'Workbook1.xls' -> 'Workbook1'
    Result := ChangeFileExt(AFileName, '');
    // Добавили постфикс 'Workbook1' -> 'Workbook1_2011_01_26'
    Result := Result + APostfix;
    // Вернули расширение 'Workbook1_2011_01_26' -> 'Workbook1_2011_01_26.xls'
    Result := ChangeFileExt(Result, Ext);
  end;

var
  FileName, Path, Postfix, FullFileName: String;
begin
  // В Edit2 - путь, вроде 'C:\Documents' или 'C:\Documents\'
  Path     := IncludeTrailingPathDelimiter(Edit2.Text);
  // В Label6 - имя файла, вроде 'Workbook1.xls', 'Workbook1' или даже '..\Workbook1.xls'
  FileName := Label6.Caption;
  // Форматирует дату в формат вида '_2011_01_26'
  Postfix  := FormatDateTime('_yyyy_mm_dd', Now);

  // 'Workbook1.xls' -> 'Workbook1_2011_01_26.xls'
  FileName := AddPostfixToFileName(FileName, Postfix);

  // Дополнили имя файла путём до полного имени файла
  FullFileName := Path + FileName;

  EF.ActiveWorkbook.SaveAs(FullFileName); 
end;
Цитата:
Windows считает символ "." недопустимым в имени файла.
В каком месте? 2011.01.26.txt - вполне себе допустимое имя файла.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 26.01.2011, 10:12   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Я когда делал пост, то проверял для кода, который создает папку. Там нельзя в имени указывать ".". А на счет обычных файлов с расширениями да, там без проблем.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 26.01.2011, 10:22   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
т.к. Windows считает символ "." недопустимым в имени файла.
и давно?
только что создал папку с точкой в имени, и файл с несколькими(помимо последней как разделитель расширения)

вообще лучше не надеятся на делфи, а самому через FormatDateTime(вроде она) задать формат времени
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 26.01.2011, 18:56   #7
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Там нельзя в имени указывать "."
Можно.

(За исключением вполне конкретных имён - '.' и '..', являющихся зарезервированными. Только это же не значит, что точку нельзя использовать. Вон, я и файл 'PRN' создать не могу - но это же не значит, что в именах файлов запрещены 'p', 'r' и 'n').

Цитата:
и давно?
Не иначе как в Windows 1.0. И то мне сомнительно.

Цитата:
не надеятся на делфи
Не на Delphi, а на неизменность региональных настроек.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слияние в MS Word - проблема с путем CrazyTactic Microsoft Office Word 6 20.03.2021 07:59
Защита от редактирования программным путем paratruper17 Microsoft Office Word 4 05.11.2009 10:55
Получение пути к файлу путем перетаскивания k1r1ch Общие вопросы Delphi 7 29.06.2009 21:19
кодирование путем повторения символов катерина_к Паскаль, Turbo Pascal, PascalABC.NET 2 12.05.2009 21:55
Создание билетов путем импорта из таблицы mistx Microsoft Office Excel 2 25.02.2009 09:02