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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2011, 11:25   #1
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
Злость Не работает функция ReNameFile

Здравствуйте.
Тут на форме есть груп бокс, на котором лист бокс, на котором создаётся динамический едит, в процедуре keyPrees которого не работает функция RenameFile. Проблема в том, что эта функция работает везде кроме этой процедуры.
Вот к примеру создаю на диске C:\ папку 123 создаю кнопку в которой пишу RenameFile(Edit1.text+ListBox1.Item s.text,Edit1.text+ListEdit.Text);
ListEdit это едит который я создал скриптом, вот на это скрипт вообще не реагирует, а если я поставлю вместо ListEdit любое другое текстовое поле которое создано не скриптом, он переименует, хотя он видит текст в ListEdit. Он видя этот текс не переименовывает!
Вложения
Тип файла: rar не пашет.rar (175.6 Кб, 9 просмотров)
пыжок

Последний раз редактировалось maloun; 10.01.2011 в 11:30.
maloun вне форума Ответить с цитированием
Старый 10.01.2011, 12:06   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

могу обьяснить почему, ListBox1.Items.text даёт вам весь текст из ListBox1
включая #10 #13 которые есть в конце, то есть такого файла который вы хотите периеновать просто нет.

Как вариант на вскидку= при нажатии "переименовать" сохраняем в глобальную переменную номер итема
Код:
var
     ListEdit:TEdit;
  Form1: TForm1;
  n_item:integer;
Код:
procedure TForm1.Rename1Click(Sender: TObject);
var
ii : integer;
lRect: TRect;
begin
ii := ListBox1.ItemIndex;
if ii=-1 then Exit else
if ListBox1.Selected[ListBox1.ItemIndex]<>false then
n_item:= listBox1.ItemIndex;
lRect := ListBox1.ItemRect(ii) ;
ListEdit.Top := lRect.Top + 1;
ListEdit.Left := lRect.Left + 1;
ListEdit.Height := (lRect.Bottom - lRect.Top) + 1;
ListEdit.Text := ListBox1.Items.Strings[ii];
ListBox1.Selected[ii] := False;
ListEdit.Visible := True;
ListEdit.SelectAll;
ListEdit.SetFocus;
end;
а потом используем текст из этого элемента списка в процедуре
Код:
procedure TForm1.ListEditKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then begin
if RenameFile(Edit1.text+ListBox1.Items.Strings[n_item],Edit1.text+ListEdit.Text) then //функция всёже и значение возвращает, почему же не использовать
showmessage('переименовл кажется'+#13+'это '+Edit1.text+ListBox1.Items.Strings[n_item]+'в это '+Edit1.text+ListEdit.Text);
ListEdit.Visible:=False;
//Key:=#0;// а это зачем?
end;
end;

Последний раз редактировалось vovk; 10.01.2011 в 12:08.
vovk вне форума Ответить с цитированием
Старый 10.01.2011, 12:11   #3
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

Спасибо, не знал что всё так просто
пыжок
maloun вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает функция keybd_event Hintman Win Api 31 05.06.2011 14:16
не работает функция Benderbej JavaScript, Ajax 2 30.08.2010 18:54
Не работает функция cin.get() dis Общие вопросы C/C++ 2 14.10.2009 18:40
Почему не работает функция? rocky7 Общие вопросы C/C++ 2 17.02.2009 08:37
Не работает функция gets()!!! Ilya'91 Общие вопросы C/C++ 1 28.07.2008 23:16