Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Incompatible types, string & WideString 
:(
    Опции темы
aktuba
Дата 9.2.2007, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Вот код основной программы:
Код

procedure Get(const AUrl: WideString; ATimeout: Integer; AProc: TRequestProc); stdcall; external '.\engine\unet.dll';
...
procedure StartRequest(AHandle, AMsg: Cardinal; AData: TDataType); stdcall;
var
  lUrl: WideString;
begin
  FHandle := AHandle;
  FMsg := AMsg;
  FRequest := '';
  FRequestCode := -1;
  lUrl := 'http://www.host.ru/index.do?' + '[I]длинная строка параматров[/I]';
  Get(lUrl, 60, EndRequest);
end;


Вот код dll:
Код

procedure Get(const AUrl: WideString; ATimeout: Integer; AProc: TRequestProc); stdcall;
...
procedure Get(const AUrl: WideString; ATimeout: Integer; AProc: TRequestProc);  stdcall;
var
  lThread: THTTPThread;
begin
  lThread := THTTPThread.Create(True, 'get', AUrl, nil, ATimeout, AProc);
  lThread.FreeOnTerminate := True;
  lThread.Resume;
end;


Почему компиляция программы прерывается ошибкой Incompatible types: "string" and "WideString"?


--------------------
user posted image
PM MAIL WWW Skype   Вверх
ivan219
Дата 9.2.2007, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



Не совпадение типом ты наверное переменной типа WideString пытаешься присвоить String попробуй 
Код

WideString:=PChar(String);

А лучше используй тип PChar
PM MAIL ICQ   Вверх
aktuba
Дата 9.2.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



ivan219, так я же привел код... Проблема возникает в строке
Код

Get(lUrl, 60, EndRequest);


Не пойму...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
ivan219
Дата 9.2.2007, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



И ещё может эту строку объявить как константу
Код

const
 lUrl = 'http://www.host.ru/index.do?' + '[I]длинная строка параметров[/I]';


Добавлено @ 19:31 
Просто Dll и разные там String не дружат используй PChar

Это сообщение отредактировал(а) ivan219 - 9.2.2007, 19:29
PM MAIL ICQ   Вверх
aktuba
Дата 9.2.2007, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



ivan219, константа не подходит, т.к параметры строки формируются динамически.
Цитата

Просто Dll и разные там String не дружат используй PChar


Ну, здесь ты не прав =))). Я использую FastShareMem и они прекрасно дружат  smile 


--------------------
user posted image
PM MAIL WWW Skype   Вверх
skyboy
Дата 9.2.2007, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



THTTPThread.Create принимает аргументом widestring или shortstring aka string?
PM MAIL   Вверх
ivan219
Дата 9.2.2007, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



Почему динамически я что-то из твоего кода это не вижу smile 

Хотя проблема наверное в другом smile 

Это сообщение отредактировал(а) ivan219 - 9.2.2007, 19:42
PM MAIL ICQ   Вверх
aktuba
Дата 9.2.2007, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



skyboy, widestring.


ivan219, ты так и не понял!!! как я в const пропишу строку, когда у меня параметров еще нет? И не буду я использовать PChar!


--------------------
user posted image
PM MAIL WWW Skype   Вверх
ivan219
Дата 9.2.2007, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



FastShareMem если строки длиннее 255 символов то это оправданно а если нет PChar с головой хватит ИМХО.
PM MAIL ICQ   Вверх
aktuba
Дата 9.2.2007, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



ivan219
Цитата

Почему динамически я что-то из твоего кода это не вижу


Код

lUrl = 'http://www.host.ru/index.do?' + 's1=' + str1 + '&s2=' + s2 + ...


Так понятнее?

Цитата

FastShareMem если строки длиннее 255 символов то это оправданно а если нет PChar с головой хватит ИМХО. 


А почему я по твоему написал длинная строка параметров???? 

Это сообщение отредактировал(а) aktuba - 9.2.2007, 19:46


--------------------
user posted image
PM MAIL WWW Skype   Вверх
ivan219
Дата 9.2.2007, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



Хорошо попробуй везде заделать String может проблема в этом.

Добавлено @ 19:48 
Цитата(aktuba @  9.2.2007,  19:45 Найти цитируемый пост)
Так понятнее?

Цитата(aktuba @  9.2.2007,  19:45 Найти цитируемый пост)
А почему я по твоему написал длинная строка параметров???? 

Другое дело теперь ясно  smile 
PM MAIL ICQ   Вверх
aktuba
Дата 9.2.2007, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

Хорошо попробуй везде заделать String может проблема в этом.


Вот мне-то как-раз нужно обратное! Мне везде необходимо WideString использовать!


--------------------
user posted image
PM MAIL WWW Skype   Вверх
ivan219
Дата 9.2.2007, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



А ошибка возникает при компиляции EXE файла smile 
PM MAIL ICQ   Вверх
aktuba
Дата 9.2.2007, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

А ошибка возникает при компиляции EXE файла


Да.


--------------------
user posted image
PM MAIL WWW Skype   Вверх
ivan219
Дата 9.2.2007, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



А попробуй вот так что будет smile 
Код

Get('http://www.host.ru/index.do?' + '[I]длинная строка параметров[/I]', 60, EndRequest);

PM MAIL ICQ   Вверх
aktuba
Дата 9.2.2007, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

А попробуй вот так что будет smile 
Код

Get('http://www.host.ru/index.do?' + '[I]длинная строка параметров[/I]', 60, EndRequest);



Пробовал - тоже самое... Точнее переменная lUrl появилась после, сначала было как у тебя...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
VICTAR
Дата 9.2.2007, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 37
Всего: 80



aktuba,  твой код  компилируется без ошибок. Ты уверен, что ошибка в строчке
Код

lUrl := 'http://www.host.ru/index.do?' + '[I]длинная строка параматров[/I]';
?

PM MAIL   Вверх
ivan219
Дата 9.2.2007, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



Помойму проблема в самой процедуре так как
Код

Get('http://www.host.ru/index.do?' + '[I]длинная строка параметров[/I]', 60, EndRequest);

Передаёт напрямую в процедуру Get строку WideString

Добавлено @ 21:00 
А попробуй зделать так:
Код

lThread := THTTPThread.Create(True, 'get', 'http://www.host.ru/index.do?' + '[I]длинная строка параметров[/I]', nil, ATimeout, AProc);

Get('', 60, EndRequest); или даже так Get(60, EndRequest);


Добавлено @ 21:02 
Цитата(VICTAR @  9.2.2007,  20:42 Найти цитируемый пост)
твой код  компилируется без ошибок.

Уменя кстати нет какие модули туда надо в писать smile в Dll и EXE
PM MAIL ICQ   Вверх
ivan219
Дата 9.2.2007, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



Может в вызове процедуры ошибка
Код

procedure Get(const AUrl: WideString; ATimeout: Integer; AProc: TRequestProc); stdcall; external '.\engine\unet.dll';

procedure Get(const AUrl: WideString; ATimeout: Integer; AProc: TRequestProc); stdcall; external '.\engine\unet.dll' name 'Get';

PM MAIL ICQ   Вверх
aktuba
Дата 10.2.2007, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

aktuba,  твой код  компилируется без ошибок.


Да, код без ошибок. Если в процедуре Get использовать string - ошибок нет, если WideString - ошибка есть.




--------------------
user posted image
PM MAIL WWW Skype   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1295 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.