Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.09;
Скачать: CL | DM;

Вниз

Вопрос - 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 вся ветка

Текущий архив: 2002.12.09;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.024 c
1-28050
Abelevich
2002-11-27 19:39
2002.12.09
Использование Word в качестве редактора


1-27983
Ag2002
2002-11-29 16:04
2002.12.09
списки


7-28318
netm
2002-10-09 22:34
2002.12.09
Как добавить путь к своей программе в Win2k?


14-28214
vok
2002-11-10 04:16
2002.12.09
Помогите с интегралами - крайне необходимо


1-28012
Alex Shulg
2002-11-28 16:24
2002.12.09
Обработка исключительной ситуации