Сейчас на форуме: jinoweb, bartolomeo, rmn (+5 невидимых)

 eXeL@B —› Программирование —› перемещение файла, перемещение файла
Посл.ответ Сообщение

Ранг: 95.5 (постоянный), 36thx
Активность: 0.080.04
Статус: Участник

Создано: 04 августа 2017 10:52
· Личное сообщение · #1

Здравствуйте!
Использую следующий код для перемещения файла, но не перемещается:
Code:
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3. s:string;
  4. p:PansiChar;
  5. p2:PansiChar;
  6. begin
  7. p:= 'C:\1921-57\1 коп\1 к 33 № 59.jpg';//откуда
  8. p2:= 'c:\1 к 33 № 59.jpg';//куда
  9. MoveFile(p, p2);
  10. end;
  11. end.





Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 04 августа 2017 11:13
· Личное сообщение · #2

Rio пишет:
не перемещается:


А что именно происходит?

Error messages?
call GetLastError() to determine the error occurred.
GetLastError(): Error codes?
Return value of MoveFile?

-----
Give me a HANDLE and I will move the Earth.


| Сообщение посчитали полезным: Rio

Ранг: 95.5 (постоянный), 36thx
Активность: 0.080.04
Статус: Участник

Создано: 04 августа 2017 11:22 · Поправил: Rio
· Личное сообщение · #3

plutos пишет:
А что именно происходит?

Error messages?
call GetLastError() to determine the error occurred.
GetLastError(): Error codes?
Return value of MoveFile?

в отладчике пока не смотрел, но если жёстко прописать:
MoveFile('C:\1921-57\1 коп\1 к 33 № 59.jpg', 'c:\1 к 33 № 59.jpg);
то всё нормально.




Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 04 августа 2017 11:49
· Личное сообщение · #4

а что в p, p2 после присвоения?

| Сообщение посчитали полезным: Rio

Ранг: 95.5 (постоянный), 36thx
Активность: 0.080.04
Статус: Участник

Создано: 04 августа 2017 13:13 · Поправил: Rio
· Личное сообщение · #5

Gideon Vi пишет:
а что в p, p2 после присвоения?

до:
004520F8 . 52 PUSH EDX ; /NewName = "c:\1 к 33 № 59.jpg"
004520F9 . 50 PUSH EAX ; |ExistingName = "C:\1921-57\1 коп\1 к 33 № 59.jpg"
004520FA . E8 B13EFBFF CALL <JMP.&kernel32.MoveFileA> ; \MoveFileA
после:
004520F8 . 52 PUSH EDX ; /NewName = "Actx "
004520F9 . 50 PUSH EAX ; |ExistingName = NULL
004520FA . E8 B13EFBFF CALL <JMP.&kernel32.MoveFileA> ; \MoveFileA

eax = 0
надо из string в PansiChar наверное...




Ранг: 307.9 (мудрец), 196thx
Активность: 0.180
Статус: Участник

Создано: 04 августа 2017 13:39 · Поправил: mysterio
· Личное сообщение · #6

надо из string в PansiChar наверное...
Code:
  1. // А может не гадать и посмотреть объявление MoveFile ?
  2. BOOL MoveFile(
  3.   LPCTSTR lpExistingFileName,       // address of name of the existing file
  4.   LPCTSTR lpNewFileName    // address of new name for the file
  5. );
  6.  
  7. MoveFile(PChar(OldName), PChar(NewName)); // OldName/NewName - может быть хоть String, хоть PansiChar ...
  8.  
  9. +Разрешение на запись само собой.


-----
Don_t hate the cracker - hate the code.


| Сообщение посчитали полезным: Rio

Ранг: 95.5 (постоянный), 36thx
Активность: 0.080.04
Статус: Участник

Создано: 04 августа 2017 13:54
· Личное сообщение · #7

mysterio пишет:
// А может не гадать и посмотреть объявление MoveFile ?

всё нормально просто дело в моей невнимательности, так тоже работает:
Code:
  1. var
  2. p:PansiChar;
  3. p2:PansiChar;
  4. begin
  5. ShowMessage('hello');
  6. p:= 'C:\1921-57\1 коп\1 к 33 № 59.jpg';//откуда
  7. p2:= 'c:\1 к 33 № 59.jpg';//куда
  8. //CopyFile(p,p2,true);

всё норм спасибо всем!


 eXeL@B —› Программирование —› перемещение файла, перемещение файла
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати