Форум: "WinAPI";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];
ВнизВопрос - Kак преобразовать String в Pchar и обратно??? Найти похожие ветки
← →
Stenkz (2002-10-22 06:47) [0]Вопрос - Kак преобразовать String в Pchar и обратно???
О то некоторые функции типа FileCopy пользуют Pchar а хотелось бы использовать string...
← →
sask (2002-10-22 06:49) [1]
var S: String;
S1: PChar;
.....
S1 := PChar(S);
← →
sask (2002-10-22 06:51) [2]а обратно (PChar -> String) - простое присваивание
← →
Rouse_ (2002-10-22 06:53) [3]procedure TForm1.FormCreate(Sender: TObject);
var s: String;
p: PChar;
begin
s:= "qwe";
p:= PChar(s);
Caption := p;
end;
Желаю успехов
← →
Rouse_ (2002-10-22 06:54) [4]Ээээ опоздал ;)
← →
Opuhshii (2002-10-22 08:31) [5]в Top 100 вопросов - этот 1 или 2 -е место,!
← →
Semion (2002-10-22 08:39) [6]непорали его поместить в фак
← →
Anatoly Podgoretsky (2002-10-22 09:00) [7]В самый болшой Delphi Help
← →
Stenkz (2002-10-23 13:45) [8]Продолжение темы: Почему не работает такое дело?
MoveFile(Pchar(LocalFileName),Pchar("c:\rko\out\arhiv\"+ F.Name));
← →
Opuhshii (2002-10-23 13:55) [9]2Stenkz © (23.10.02 13:45)
а что у вас LocalFileName???
и F.Name?
← →
Stenkz (2002-10-23 13:58) [10]Енто
LocalFileName : string;
F.name : String;
← →
Me2 (2002-10-23 14:00) [11]Что конкретно не работает?
← →
Anatoly Podgoretsky (2002-10-23 14:05) [12]Интереснее другое, что такое F
← →
Stenkz (2002-10-23 14:07) [13]Прога проскакивает эту функцию и ничего не говорит,
по наблюдением переноса файла не происходит...
← →
Me2 (2002-10-23 14:10) [14]2Anatoly Podgoretsky © (23.10.02 14:05)
Скорее всего TSearchRec
← →
Me2 (2002-10-23 14:15) [15]Предоставь значение переменных!!!!
← →
Anatoly Podgoretsky (2002-10-23 14:26) [16]Какой код ошибки, ты ужасно скрытный человек, наверно в ящике работаешь
← →
sask (2002-10-23 14:27) [17]проверяй возвращаемое значение (True/False), если False - юзай GetLastError ...
← →
Stenkz (2002-10-23 14:33) [18]Значения -
LocalFileName: "c:\rko\out\mt581131.zip"
"c:\rko\out\arhiv\"+ F.Name: "c:\rko\out\arhiv\mt581131.zip"
← →
Игорь Шевченко (2002-10-23 14:33) [19]Отладчик - оно вообще рулез
← →
Kaban (2002-10-23 14:33) [20]Первоначальный вопрос, кстати, так никто и не понял, нужно преобразовать String в PChar ИСПОЛЬЗУЯ WINAPI!
← →
Anatoly Podgoretsky (2002-10-23 14:35) [21]Ему в данном случае вообще не надо преобразовывать, так что WimApi побоку, достаточно только приведения
← →
Stenkz (2002-10-23 14:42) [22]Ошибки не возникает
там просто перед этим происходит поиск фаила, а так как он не переноситься - цикл бесконечный. А преобразование нуна потомучто
при попытке написать:
MoveFile(LocalFileName,"c:\rko\out\arhiv\"+ F.Name);
говорит не верный тип....
← →
sask (2002-10-23 14:48) [23]а директория "c:\rko\out\arhiv\" я, надеюсь, существует?
← →
Stenkz (2002-10-23 14:55) [24]Конечно существует, например
RenameFile(LocalFileName,"c:\rko\out\arhiv\"+ F.Name);
DeleteFile(LocalFileName);
Работает, но это же геморой...
← →
sask (2002-10-23 15:20) [25]Согласен...
попробуй:
MoveFileEx(PChar(LocalFileName),
PChar("c:\rko\out\arhiv\"+ F.Name), MOVEFILE_COPY_ALLOWED + MOVEFILE_REPLACE_EXISTING)
← →
sask (2002-10-23 15:22) [26]А еще лучше приведи кусок кода с циклом.
← →
Stenkz (2002-10-23 15:54) [27]Вот оно
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 16:19) [28]На мой взгляд все нормально,
но я все-таки поставил бы:
if not MoveFile(Pchar(LocalFileName),
Pchar("c:\rko\out\arhiv\"+ F.Name)) then
ShowMessage(SysErrorMessage(GetLastError));
← →
Anatoly Podgoretsky (2002-10-23 16:20) [29]Не единой проверки на ошибки
FileSearch вообще не нужен эту работу выполняет FindFirst/FindNexr соответствнно нет нужды во множественном захвате/освобождние ресурсов.
Неястно зачем в цикле постоянно ProgressBar1.Position:=0;, не видать использования ZapFileName
← →
Stenkz (2002-10-24 05:37) [30]С проверкой на ошибки конечно туго...
а всё остальное используется (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;
← →
Stenkz (2002-10-24 11:55) [31]У кого-нибудь была проблемма -
Запускаем досовский *.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);
← →
Anatoly Podgoretsky (2002-10-24 12:13) [32]Stenkz © (24.10.02 05:37)
Нельзя так, FindFirst/FindClose вызываются только один раз, а FindNext ы цикле
Хороший пример есть в местном FAQ
← →
Stenkz (2002-10-28 08:10) [33]Спасибо все за ответы.
← →
KSergey (2002-10-28 12:52) [34]> Kaban © (23.10.02 14:33)
> Первоначальный вопрос, кстати, так никто и не понял, нужно
> преобразовать String в PChar ИСПОЛЬЗУЯ WINAPI!
А как же его можно было понять, интересно? Телепатией?!
А в WinAPI нет понятия String и PChar. Это - исключетельно паскальные понятия. Следовательно и переводить средствами WinAPI это невозможно.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.008 c