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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> переименование и копирование файла, помогите 
:(
    Опции темы
M@100DON
Дата 4.11.2007, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 27.7.2007

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



У меня в проге стоит listbox и мне хотелось бы что бы по клику на кнопку выскакивал OpenDialog,выбирался файл и выбраный файл переименовывался в название в listbox и далее копировался в папку!
PM MAIL   Вверх
kemiisto
Дата 4.11.2007, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 2
Всего: 160



Процедура обработчик события нажатия кнопки должна быть примерна такая:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  OldFile, NewFile: string;
begin
  if not OpenDialog1.Execute then
    Exit;
  OldFile := OpenDialog1.FileName;
  NewFile := ChangeFilePath(ListBox1.Items.Strings[ListBox1.ItemIndex], 'c:\');
  CopyFile(PChar(OldFile), PChar(NewFile), True);
end;


Если я правильно понял.

Добавлено через 1 минуту и 19 секунд
Вместо 'c:\' укажи папку, куда хочешь скопировать файл.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
M@100DON
Дата 5.11.2007, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 27.7.2007

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



Я наверно не правильно понимаю как пользоваться этим кодом!
Короче у меня выбивает ошибку на строке с ChangeFilePath, "value assignet to we newer used"
Обьясни в чём загвоздка!
PM MAIL   Вверх
kemiisto
Дата 5.11.2007, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 2
Всего: 160



Цитата
value assignet to we newer used
 это видимо Value assigned to we never used.

Ну, это не Error(ошибка), а всего лишь Hint(подсказка); компилятор озадачен тем, что значение переменной we присваивается, а далее эта переменная нигде не используется.

Сама же ошибка может происходить из-за того, что в ListBox1 не выделен элемент.

Код

NewFile := ChangeFilePath(ListBox1.Items.Strings[ListBox1.ItemIndex], 'c:\');
 

Как видишь, здесь (ListBox1.Items.Strings[ListBox1.ItemIndex]) я узнаю текст выделенного элемента, а если ничего не выделено - будет не хорошо!

Добавлено через 1 минуту и 9 секунд
Кстати, а че это за переменная we?


--------------------
PM MAIL WWW GTalk Jabber   Вверх
M@100DON
Дата 5.11.2007, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 27.7.2007

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



Цитата(kemiisto @ 5.11.2007,  19:37)


Сама же ошибка может происходить из-за того, что в ListBox1 не выделен элемент.


Так ка же элемент может быть сразу выделен еси задача моей проги извлеч из файла эти элементы ,  а только потом их менять!
PM MAIL   Вверх
kemiisto
Дата 5.11.2007, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 2
Всего: 160



Цитата

У меня в проге стоит listbox и мне хотелось бы что бы по клику на кнопку выскакивал OpenDialog,выбирался файл и выбраный файл переименовывался в название в listbox и далее копировался в папку!


Цитата

задача моей проги извлеч из файла эти элементы ,  а только потом их менять


Так в чем все-таки задача?


--------------------
PM MAIL WWW GTalk Jabber   Вверх
M@100DON
Дата 5.11.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 27.7.2007

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



Выбраный файл разбирается на n-количество *.gif и сразу список отображается в ListBox, а потом файл выделленый в listbox нужно менять!
PM MAIL   Вверх
kemiisto
Дата 5.11.2007, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 2
Всего: 160



Так....
Значит сначала ты выбираешь некий файл, который 
Цитата
разбирается на n-количество *.gif и сразу список отображается в ListBox

Потом выбираешь еще файл. Им заменяешь тот, который сейчас выделен в ListBox.

Я правильно понял?


--------------------
PM MAIL WWW GTalk Jabber   Вверх
M@100DON
Дата 5.11.2007, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 27.7.2007

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



Да, выделяю файл в списке и по кнопке выбираю файл, которым нуна заменить существующий!
PM MAIL   Вверх
kemiisto
Дата 5.11.2007, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 2
Всего: 160



Ну изначально я почти так и понял!

Попробуй так:

вместо
Код

CopyFile(PChar(OldFile), PChar(NewFile), True);
 

Код

CopyFile(PChar(OldFile), PChar(NewFile), False);
 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
M@100DON
Дата 5.11.2007, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 27.7.2007

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



Не катит, ошибку выдаёт всеравно на строке :
Код
NewFile := ChangeFilePath(ListBox1.Items.Strings[ListBox1.ItemIndex], 'c:\');


PM MAIL   Вверх
kemiisto
Дата 5.11.2007, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 2
Всего: 160



Это хотя бы позволит заменить существующий!

А вот почему ошибка вылетает? Может скриншот даш?

Добавлено через 2 минуты и 7 секунд
Слушай, а ты второй параметр ('c:\') на свой путь изменил?


--------------------
PM MAIL WWW GTalk Jabber   Вверх
M@100DON
Дата 5.11.2007, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 27.7.2007

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



ХЗ, а какой те скриншот дать, ну вот после нажатия на F9
user posted image
PM MAIL   Вверх
kemiisto
Дата 5.11.2007, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 2
Всего: 160



Ну тут же черным по белому написано (3 строка закладки Build) 

[Error] ... Undeclared identifier ChangeFilePath

у тебя в uses есть SysUtils?


--------------------
PM MAIL WWW GTalk Jabber   Вверх
M@100DON
Дата 5.11.2007, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 27.7.2007

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



Цитата(kemiisto @ 5.11.2007,  20:55)


у тебя в uses есть SysUtils?

Ну да есть!
PM MAIL   Вверх
kemiisto
Дата 5.11.2007, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 2
Всего: 160



А это Delphi какой версии? 

Просто функция ChangeFilePath находится в модуле ЫныГешдыю У тебя он подключен, а Delphi ругается!


--------------------
PM MAIL WWW GTalk Jabber   Вверх
M@100DON
Дата 5.11.2007, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 27.7.2007

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



У меня Delphi 7 .
PM MAIL   Вверх
kemiisto
Дата 5.11.2007, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 2
Всего: 160



Знаешь ты тогда  лучше опиши ее сам прямо в Unit1:

Код

function ChangeFilePath(const FileName, Path: string): string;
begin
  Result := IncludeTrailingPathDelimiter(Path) + ExtractFileName(FileName);
end;


Странно, что ее в SysUtils нету...  smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
M@100DON
Дата 5.11.2007, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 27.7.2007

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



Прога запустилась, файлы не копируются!

PM MAIL   Вверх
kemiisto
Дата 5.11.2007, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 2
Всего: 160



Ну это уже хоть что-то!

Да, кстати в Delphi 7 в SysUtils такой (ChangeFilePath) функции еще не было!

Я вот смотрю на скриншот и там вижу ошибку: ты отображаешь OpenDialog1, а имя файла у тебя почему-то OpenDialog2.FileName.

Ты уж определись.

Эта часть кода отобразить OpenDialog1 и если пользователь просто его закроет (а не выберет файл) - произойдет выход из процедуры OnClick:
Код

  if not OpenDialog1.Execute then
    Exit;


Если же OpenDialog1.Execute вернет True то в  OpenDialog1.FileName будет имя выбранного файла.
Но уж никак ни в OpenDialog2.FileName.



--------------------
PM MAIL WWW GTalk Jabber   Вверх
M@100DON
Дата 5.11.2007, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 27.7.2007

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



Я не могу понять строку 
Код

OldFile := OpenDialog2.FileName;

Как может быть! Получается старый файл тоже нуна выбирать?
PM MAIL   Вверх
kemiisto
Дата 6.11.2007, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 2
Всего: 160



Код

procedure TForm1.Button1Click(Sender: TObject);
var
  OldFile, NewFile: string;
begin
  if not OpenDialog1.Execute then
    Exit;
  OldFile := OpenDialog1.FileName;
  NewFile := ChangeFilePath(ListBox1.Items.Strings[ListBox1.ItemIndex], 'c:\');
  CopyFile(PChar(OldFile), PChar(NewFile), False);
end;


В подробностях:

OpenDialog1.Execute вернет True, если пользователь выберет файл и False - в остальных случаях. 

Если вернет False, значит пользователь файл не выбрал и все остальные действия не нужны, поэтому:
Код

  if not OpenDialog1.Execute then
    Exit;


а если вернет True - значит пользователь файл выбрал и надо совершит некоторые дествия. 
Переменные OldFile и NewFile хранят исходное имя файла и его имя после переименования и копирования.
Исходное имя (OldFile) я получаю из OpenDialog1.FileName, новое - через ChangeFilePath.
Ну и, наконец, выполняю копирование OldFile -> NewFile.




--------------------
PM MAIL WWW GTalk Jabber   Вверх
M@100DON
Дата 6.11.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 27.7.2007

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



Сделал как нада , но всеравно файлик не копируется! В чём прикол?
PM MAIL   Вверх
kemiisto
Дата 9.11.2007, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 2
Всего: 160



Слушай, может код кинешь (если возможно)?


--------------------
PM MAIL WWW GTalk Jabber   Вверх
M@100DON
Дата 10.11.2007, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 27.7.2007

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



Ну лан, прикрепил файло 

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  Unit1.pas 6,01 Kb
PM MAIL   Вверх
kemiisto
  Дата 10.11.2007, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 2
Всего: 160



Так сложновато будет! Хотелось бы видеть весь проект! 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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