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

Вниз

TEdit и свойство Text   Найти похожие ветки 

 
snake_r   (2005-01-20 10:18) [0]

Здравствуйте!
пытаюсь передать параметром в функцию, значение свойства text объекта класса Tedit. Параметр функции имеет тип PChar.
Пишу f1(PChar(Edit1.Text)); в функцию передается мусор.
посмотрел в исходниках StdCtrls , свойство Text класса TEdit, там  нигде не стоит типа :(

где реально хранится текст из этого свойства, и как получить к нему указатель?


 
Strech   (2005-01-20 10:42) [1]

А как ты знаешь, что туда мусор передался? Функции использующие PChar еще и длину текста знать должны.


 
snake_r   (2005-01-20 10:50) [2]

как узнал что мусор, очень просто, потомучто результат функции это запись этой строки в файл.
а на счет длин текста Pchar???!!! это ты что то не из той оперы :)
Pchar это массив Char заканчивающийся #0.
А длина строки прописывается тольео у ShortString, где в нулевом символе массива стоит длина строки.


 
Style ©   (2005-01-20 10:50) [3]

Код давай :)


 
snake_r   (2005-01-20 10:50) [4]

пардон, Pchar это указатель на массив :)


 
snake_r   (2005-01-20 10:53) [5]

Function SetUserParam(UserName,ParamName,Mean:String):Integer;
Var f1:Function (UserName,ParamName,Mean:PChar):Integer;
   h:HWND;
begin
h:=LoadLibrary(PChar(ExtractFilePath(ParamStr(0))+"usermanager.dll"));
@f1:=GetProcAddress(h,"SetUserParam");
if @f1<>nil Then
 f1(PChar(UserName),PChar(ParamName),PChar(Mean));
FreeLibrary(h);
end;

в DLL

Function SetUserParam(UserName,ParamName,Mean:PChar):Integer;  stdcall;
Begin
try
 MainLog.Append(UsersFile+StrPas(UserName)+StrPas(ParamName)+StrPas(Mean));
 Result:=0;
 MainLog.SaveLog;
except
 Result:=1;
 MainLog.Append("try section");
end;
MainLog.SaveLog;
End;


 
Alexander Panov ©   (2005-01-20 10:56) [6]

Тебя не настораживает различие в строках -

Function SetUserParam(UserName,ParamName,Mean:String):Integer;

Function SetUserParam(UserName,ParamName,Mean:PChar):Integer;  stdcall;


 
Alexander Panov ©   (2005-01-20 10:57) [7]

+
Var f1:Function (UserName,ParamName,Mean:PChar):Integer;


 
snake_r   (2005-01-20 11:08) [8]

чем меня должно это настораживать, если я передаю в функцию DLL преобразованую переменную?


 
Alexander Panov ©   (2005-01-20 11:09) [9]

snake_r   (20.01.05 11:08) [8]
чем меня должно это настораживать, если я передаю в функцию DLL преобразованую переменную?


Обрати внимание на stdcall.
Соглашения о передаче параметров должэны быть одинаковыми.


 
PVOzerski ©   (2005-01-20 11:12) [10]

2snake_r   (20.01.05 10:53) [5]
Ошибка во 2-й строке :^)
Var f1:Function (UserName,ParamName,Mean:PChar):Integer;stdcall;
В процедурных переменных ведь тоже соглашения о параметрах забывать не надо.


 
snake_r   (2005-01-20 11:14) [11]

тьфу черт :(
блин пол дня возить ся из-за этого stdcall


 
Style ©   (2005-01-20 11:15) [12]


> блин пол дня возить ся из-за этого stdcall


Бывает :)


 
Alexander Panov ©   (2005-01-20 11:18) [13]

snake_r   (20.01.05 11:14) [11]
блин пол дня возить ся из-за этого stdcall


Точно, бывает.
Я один раз возился целый день из-за того, что в параметрах вместо DWORD было Integer.



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

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

Наверх





Память: 0.47 MB
Время: 0.128 c
4-1102333739
UFO
2004-12-06 14:48
2005.01.30
2 нити при старте программы


1-1105830719
dnd
2005-01-16 02:11
2005.01.30
Как из DateTime вытащить число месяца?


8-1097922688
GlavBOTan
2004-10-16 14:31
2005.01.30
Большой Bitmap и маленький A4 (или любой другой)


3-1104332713
IDens
2004-12-29 18:05
2005.01.30
Проблема в своем обрабочике OnLogin


1-1106147594
Dima Palachansky
2005-01-19 18:13
2005.01.30
Закрылось ли приложение?





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