Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2012, 14:57   #1
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию Передача и обработка текста в DLL

Имеется приложение и DLL
Приложение получает String и использует процедуру из DLL передая String и в длл запускается процедура в которой стартуются потоки
Код:
    if fileexists(fname1) then
    begin
    DLLInstance := LoadLibrary(PChar(fname1));
  if (DLLInstance <> 0) then
  try
    @StartModule := GetProcAddress(DLLInstance, 'StartModule');
    if Assigned(@StartModule) then
    StartModule(ss[6]);
  finally
   FreeLibrary(DLLInstance);
  end;
Процедура в DLL принимает и обрабатывает строку, разбивая на кусочки
Знаю что в ДЛЛ Стринг нельзя использовать, как быть?
Нада что бы все функции String были сохранены и можна было бы свободно проводить действия над ней типа

Код:
Delete(str,1,Pos('=',str));
            Target:=Copy(str,1,Pos('?',str)-1);
            Delete(str,1,Pos('?',str));
            postdata:=Copy(str,1,Pos('+',str)-1);
            thread:=StrToInt(Copy(str,Pos('+',str)+1,Length(str)));
Lauri вне форума Ответить с цитированием
Старый 12.02.2012, 15:15   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Передавайте WideString или WideChar
Человек_Борща вне форума Ответить с цитированием
Старый 12.02.2012, 15:25   #3
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Передавайте WideString или WideChar
Изначально у меня переменная String. Нужно ли делать конверт из WideString в String и сохранятся ли при этом все функции String?
Lauri вне форума Ответить с цитированием
Старый 12.02.2012, 15:48   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

при обмене DLL < = > программа - только WideString с использованием FastMM
Человек_Борща вне форума Ответить с цитированием
Старый 12.02.2012, 22:03   #5
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Или использовать PChar для вашей строки.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 13.02.2012, 08:30   #6
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию

В Вашем случае должно быть:
Код:
StartModule(WideString(ss[6]));
А в самой DLL строка в методе примерно так
Код:
procedure StartModule (s : WideString); stdcall; export;
И тогда с этой переменной s можно работать как с обычным String, ну или в самой процедуре можешь сконвертировать в AnsiString(s);

Последний раз редактировалось FaTaL; 13.02.2012 в 08:34.
FaTaL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача данных из/в DLL like_cloud Общие вопросы Delphi 4 20.11.2011 08:42
Обработка исключения из DLL libmysql.dll san4ezart Помощь студентам 2 28.08.2011 22:39
Передача строк из dll sprofxx Общие вопросы Delphi 9 02.04.2010 07:41
Передача StringGrid в DLL Adamrus Общие вопросы Delphi 7 30.11.2009 21:46
передача фрейма из dll BESS Компоненты Delphi 1 20.04.2009 18:54