Форум: "Основная";
Текущий архив: 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