Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Создание dll с vcl функциями (DecodeDate) / 4 сообщений из 4, страница 1 из 1
16.11.2005, 15:02
    #33381714
Vector
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание dll с vcl функциями (DecodeDate)
Здравствуйте народ!
Вот появилась необходимость написать dll, которая бы использовала
внутри себя данную функцию.
По непонятным причинам, при использовании этой функции возникает ошибка переполнения стека (Stack overflow).
Вот мой код :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
extern "C" AnsiString __declspec(dllexport) dateToSqlQuery(System::TDateTime);

AnsiString dateToSqlQuery(System::TDateTime dt){
  AnsiString ret;
  Word y, m, d;
  DecodeDate(dt, y, m, d);
#if SERVER_TYPE==MSSQL
  ret=String(y);
  if(m< 10 ) ret=ret+"0"+String(m);
  else ret=ret+String(m);
  if(d< 10 ) ret=ret+"0"+String(d);
  else ret=ret+String(d);
#elif  SERVER_TYPE==FIREBIRD
  if(d< 10 ) ret=ret+"0"+String(d);
  else ret=ret+String(d);
  ret=ret+".";
  if(m< 10 ) ret=ret+"0"+IntToStr(m);
  else ret=ret+String(m);
  ret=ret+".";
  ret=String(y);
#endif
  return ret;
}
//---------------------------------------------------------------------------
Не могу понять в чем дело и, как добиться результата.
Может кто-нибудь знает? Подскажите please.
С уважением Vector
...
Рейтинг: 0 / 0
16.11.2005, 17:30
    #33382281
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание dll с vcl функциями (DecodeDate)
если ты так напишешь, то данный формат будут понимать абсолютно все сервера поддерживающие стандартsql92

String date_sql92( const System::TDateTime &dt )
{
return dt.FormatString("yyyymmdd");
}
...
Рейтинг: 0 / 0
17.11.2005, 05:45
    #33382888
Vector
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание dll с vcl функциями (DecodeDate)
FormatString вызывает все туже ошибку.
Кстати, я ошибся, там выдается вообще не понятная ошибка:
Integer overflow
...
Рейтинг: 0 / 0
17.11.2005, 08:12
    #33382995
Vector
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание dll с vcl функциями (DecodeDate)
Мда. Народ вопрос снят. Я сам накосячил, был невнимательным, за что и поплатился. Вот как я подключал и использовал функцию из dll:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  //В первой же строке и ошибка!! (Я просто скопировал это из другого места)
  //Я определяю функцию с параметром AnsiString, когда надо TDateTime!!!
  //typedef AnsiString (__stdcall *Function)(AnsiString);
  //Вот как надо, блин!!!
  typedef AnsiString (__stdcall *Function)(TDateTime);
  Function dsql=NULL;
  HINSTANCE dllLibrary=LoadLibrary("funclib.dll");
  dsql=(Function)GetProcAddress(dllLibrary, "_dateToSqlQuery");
  Label2->Caption="Ñòðîêà: "+dsql(DateTimePicker1->Date);
  FreeLibrary(dllLibrary);
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Создание dll с vcl функциями (DecodeDate) / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]