Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос - Kак преобразовать String в Pchar и обратно??? [D6, Win95/98, WinME, NT4, Win2k, WinXP]


Страницы:   1 2

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]

Предоставь значение переменных!!!!


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо