Главная страница
    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.046 c
1-1106005099
TGLDummyCube
2005-01-18 02:38
2005.01.30
Неразрешимая проблема из GLScene ? Сохранение float-значения


1-1106045945
ShimON
2005-01-18 13:59
2005.01.30
Шифрование паролей


1-1106150907
Wolf3
2005-01-19 19:08
2005.01.30
Ка поставить таймаут на определенное время?


3-1103805952
XAdmin
2004-12-23 15:45
2005.01.30
Редактирование Gird с Lookup полем.


14-1105121935
Fin
2005-01-07 21:18
2005.01.30
WI FI





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