Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Вниз

pchar   Найти похожие ветки 

 
Muskat   (2003-06-11 13:54) [0]

procedure Test1(pc: PChar);
begin
if pc <> "" then
ShowMessage("!");
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Test1("");
end;

При вызове процедуры Test1 с параметром pc = "", срабатывает ShowMessage("!");

Почему???


 
Юрий Федоров   (2003-06-11 13:58) [1]

Ты сравниваешь два PChar (два Pointer"а по сути);
Они имеют разные значения, так как указывают на разные области памяти.
Для сравнения их содержимого используй StrComp


 
jel   (2003-06-11 13:59) [2]

Может быть попробовать на nil проверять, а не на ""?


 
Spawn   (2003-06-11 14:01) [3]

Ну ты возьми и проверь напрмер, длину, т.е.
if Length(pc)<>0 then


 
Muskat   (2003-06-11 14:02) [4]


> jel © (11.06.03 13:59)

Нет не поможет.

> Юрий Федоров © (11.06.03 13:58)

Спасибо.


 
han_malign   (2003-06-11 14:05) [5]

pc<>"" - читай pc<>nil (такое уж соглашение в Delphi, что бы лишних AV не было)
а константа "" - имеет вполне определенный адрес и фактическую длинну 1 (PChar("")[0]=#0)

мне приходилось извращаться из-за этого:
function WaitExec(const aAppName,aCmdLine: string): DWORD;
var _pi: PROCESS_INFORMATION;
_si: STARTUPINFO;
pc: PChar;
begin
FillChar(_si,sizeof(_si),0);
_si.cb:=sizeof(_si);
_si.wShowWindow:=SW_SHOWDEFAULT;
FillChar(_pi,sizeof(_pi),0);
if(aAppName="")then pc:=nil else pc:=PChar(aAppName);
if(CreateProcess( pc,PChar(aCmdLine),nil,nil,false,0,nil,nil,_si,_pi))
then Result:=NO_ERROR else Result:=GetLastError;
- иначе "путь к приложению не найден", хотя параметр опционный, но преверяется на nil, а не на #0


 
VMcL   (2003-06-11 16:28) [6]

>han_malign © (11.06.03 14:05)
>такое уж соглашение в Delphi, что бы лишних AV не было

Какое отношение CreateProcess имеет к соглашениям в Delphi?

Справка по CreateProcess:
The lpApplicationName parameter can be NULL. In that case, the module name must be the first white space-delimited token in the lpCommandLine string.

Именно поэтому CreateProcess не понимает пустой PChar (""), и нужно передавать nil.


 
han_malign   (2003-06-11 16:44) [7]

sapienti sat


 
VMcL   (2003-06-11 16:54) [8]

>han_malign © (11.06.03 16:44)

Выпендрился? Молодец.

P. S. Главный вопрос: кто "умный"? :)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.03 c
8-84459
Ifrit
2003-03-09 13:32
2003.06.26
Народ, помогите!!!!, Как сделать форму прозрачной...


1-84085
Zyx/2
2003-06-10 12:12
2003.06.26
Scriptovyj jazyk


3-83978
McSimm2
2003-05-29 08:27
2003.06.26
Размер поля


6-84508
ole
2003-04-17 04:34
2003.06.26
Мультикаст


3-83946
basil
2003-06-04 11:32
2003.06.26
Два клиента BDE в сети не видят изменения пока не выключишь





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский