Главная страница
    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.038 c
1-1106205535
snake_r
2005-01-20 10:18
2005.01.30
TEdit и свойство Text


1-1106219590
FUNdaMental
2005-01-20 14:13
2005.01.30
Вызов ВОРДА


14-1105085486
Шишкин Илья
2005-01-07 11:11
2005.01.30
Выбор КПК


1-1105897627
Ice-Man
2005-01-16 20:47
2005.01.30
Bitmap и Image


1-1105791814
L.E.E.
2005-01-15 15:23
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский