Главная страница
    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.029 c
1-84341
Igor
2003-06-16 11:37
2003.06.26
Абсолютные координаты компонента в окне


1-84368
kasper
2003-06-16 17:34
2003.06.26
Помогите с выводом на печать!!


1-84238
Holy
2003-06-13 10:30
2003.06.26
По самой среде.


14-84723
Mike B.
2003-06-05 14:22
2003.06.26
Реклама на сайте


3-83874
Ann
2003-06-02 14:18
2003.06.26
Grid





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