Главная страница
    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.04 c
1-1105885062
Piter
2005-01-16 17:17
2005.01.30
Что означают параметры в директивах


3-1104246356
Belkova
2004-12-28 18:05
2005.01.30
Копирование БД и монопольный доступ


1-1106210826
XmeD
2005-01-20 11:47
2005.01.30
Определение железа локального компьютера


9-1098607787
rydmi
2004-10-24 12:49
2005.01.30
Collusion.


3-1103815859
juice
2004-12-23 18:30
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский