Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.30;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.045 c
14-1105217329
syte_ser78
2005-01-08 23:48
2005.01.30
Nova News


1-1105696438
Zilog
2005-01-14 12:53
2005.01.30
структура конфигурационного файла (как хранить)


3-1103727563
Denmin
2004-12-22 17:59
2005.01.30
Как сохранить файл jpg в таблицу MSSQL ?


3-1104164186
juice
2004-12-27 19:16
2005.01.30
TQuickReport


1-1105898520
Dmitry_04
2005-01-16 21:02
2005.01.30
Как мне определить какой стиль шрифта в Label-е?