![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос - Kак преобразовать String в Pchar и обратно??? [D6, Win95/98, WinME, NT4, Win2k, WinXP]
Stenkz © (2002-10-22 06:47:00)Вопрос - Kак преобразовать String в Pchar и обратно???
О то некоторые функции типа FileCopy пользуют Pchar а хотелось бы использовать string...
KSergey (2002-10-28 12:52:00) [1]> Kaban © (23.10.02 14:33)
> Первоначальный вопрос, кстати, так никто и не понял, нужно
> преобразовать String в PChar ИСПОЛЬЗУЯ WINAPI!
А как же его можно было понять, интересно? Телепатией?!
А в WinAPI нет понятия String и PChar. Это - исключетельно паскальные понятия. Следовательно и переводить средствами WinAPI это невозможно.
Stenkz (2002-10-28 08:10:00) [2]Спасибо все за ответы.
Anatoly Podgoretsky (2002-10-24 12:13:00) [3]Stenkz © (24.10.02 05:37)
Нельзя так, FindFirst/FindClose вызываются только один раз, а FindNext ы цикле
Хороший пример есть в местном FAQ
Stenkz (2002-10-24 11:55:00) [4]У кого-нибудь была проблемма -
Запускаем досовский *.bat...
и программа понеслась дальше, даже если "батник" не отработал.
Как это дело сделать так, чтобы прога ждала пока батник отработает?
Я написал примерно так:
rez:=0;
rez:=WinExec("c:\rko\move.bat", SW_HIDE);
If rez>31 then
begin
Memo1.Lines.Add(" файлы перенесены в архив... ");
end
else MessageDlg("Дожитесь переноса файлов в архив",mtInformation,[mbOK],0);
Stenkz (2002-10-24 05:37:00) [5]С проверкой на ошибки конечно туго...
а всё остальное используется (progressbar и т.д.) :).
насколько я понял предлагается следующее:
while FindFirst("c:\rko\out\*.zip", faAnyFile, F) do
begin
FCol:=FCol+1;
ProgressBar1.stepit;
.....................................
LocalFileName :="c:\rko\out\"+ F.Name;
MoveFile(Pchar(LocalFileName),Pchar("c:\rko\out\arhiv\"+ F.Name));
FindClose(F);
end;
Anatoly Podgoretsky (2002-10-23 16:20:00) [6]Не единой проверки на ошибки
FileSearch вообще не нужен эту работу выполняет FindFirst/FindNexr соответствнно нет нужды во множественном захвате/освобождние ресурсов.
Неястно зачем в цикле постоянно ProgressBar1.Position:=0;, не видать использования ZapFileName
sask (2002-10-23 16:19:00) [7]На мой взгляд все нормально,
но я все-таки поставил бы:
if not MoveFile(Pchar(LocalFileName),
Pchar("c:\rko\out\arhiv\"+ F.Name)) then
ShowMessage(SysErrorMessage(GetLastError));
Stenkz (2002-10-23 15:54:00) [8]Вот оно
while FileSearch("*.zip", "c:\rko\out\")<>"" do
begin
FindFirst("c:\rko\out\*.zip", faAnyFile, F);
FCol:=FCol+1;
ProgressBar1.Position:=0;
LocalFileName :="c:\rko\out\"+ F.Name;
ZapFileName :=ChangeFileExt(LocalFileName, ".zap");
MoveFile(Pchar(LocalFileName),Pchar("c:\rko\out\arhiv\"+ F.Name));
FindClose(F);
end
sask (2002-10-23 15:22:00) [9]А еще лучше приведи кусок кода с циклом.
sask (2002-10-23 15:20:00) [10]Согласен...
попробуй:
MoveFileEx(PChar(LocalFileName),
PChar("c:\rko\out\arhiv\"+ F.Name), MOVEFILE_COPY_ALLOWED + MOVEFILE_REPLACE_EXISTING)
Stenkz (2002-10-23 14:55:00) [11]Конечно существует, например
RenameFile(LocalFileName,"c:\rko\out\arhiv\"+ F.Name);
DeleteFile(LocalFileName);
Работает, но это же геморой...
sask (2002-10-23 14:48:00) [12]а директория "c:\rko\out\arhiv\" я, надеюсь, существует?
Stenkz (2002-10-23 14:42:00) [13]Ошибки не возникает
там просто перед этим происходит поиск фаила, а так как он не переноситься - цикл бесконечный. А преобразование нуна потомучто
при попытке написать:
MoveFile(LocalFileName,"c:\rko\out\arhiv\"+ F.Name);
говорит не верный тип....
Anatoly Podgoretsky (2002-10-23 14:35:00) [14]Ему в данном случае вообще не надо преобразовывать, так что WimApi побоку, достаточно только приведения
Stenkz (2002-10-23 14:33:00) [15]Значения -
LocalFileName: "c:\rko\out\mt581131.zip"
"c:\rko\out\arhiv\"+ F.Name: "c:\rko\out\arhiv\mt581131.zip"
Kaban (2002-10-23 14:33:00) [16]Первоначальный вопрос, кстати, так никто и не понял, нужно преобразовать String в PChar ИСПОЛЬЗУЯ WINAPI!
Игорь Шевченко (2002-10-23 14:33:00) [17]Отладчик - оно вообще рулез
sask (2002-10-23 14:27:00) [18]проверяй возвращаемое значение (True/False), если False - юзай GetLastError ...
Anatoly Podgoretsky (2002-10-23 14:26:00) [19]Какой код ошибки, ты ужасно скрытный человек, наверно в ящике работаешь
Me2 (2002-10-23 14:15:00) [20]Предоставь значение переменных!!!!