Главная страница
    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.026 c
14-84551
VAleksey
2003-06-03 15:05
2003.06.26
А так ли много в Вашей жизни зависит от Вас самих?


3-83920
DDP1
2003-06-03 11:36
2003.06.26
Перенос данных из DBF в SQL SERVER


3-83961
DBDev
2003-05-29 14:01
2003.06.26
Коллеги, помогите в качестве вычисляемого поля FLOAT впихнуть...


6-84478
xman
2003-04-15 14:40
2003.06.26
Сеть+аудио


9-83851
ArtGamer my name
2003-01-12 21:37
2003.06.26
А как в GLScene удалять объекты из сцены в Runtime???





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