Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.009 c
8-28149
frum
2002-08-21 16:16
2002.12.09
ВЫДИЛЕНИЕ


14-28204
Supra
2002-11-11 18:14
2002.12.09
Программа для определения программы


14-28265
JC
2002-11-18 10:51
2002.12.09
Как открыть icl библиотечку???


14-28199
iNew
2002-11-20 05:05
2002.12.09
Почему не доходит сообщение посланное командой net send


4-28368
Axis_of_Evil
2002-10-28 09:37
2002.12.09
Памагитя!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский