Главная страница
    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.025 c
3-83890
Andreyki
2003-06-02 18:40
2003.06.26
БД и CGI


3-84043
Z_man7777
2003-06-02 06:25
2003.06.26
Вопрос по полю типа Float в InterBase6.x


7-84785
Andr_Volk
2003-04-16 05:44
2003.06.26
Как отключить мышь?


3-83956
McSimm2
2003-06-04 08:16
2003.06.26
Оптимизация работы программы


14-84636
sly fox
2003-06-10 08:34
2003.06.26
Где взять готовые отчеты?





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