Форум программистов, компьютерный форум CyberForum.ru

Как правильно вызвать функцию? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
igor-x
0 / 0 / 0
Регистрация: 17.11.2009
Сообщений: 8
14.02.2011, 11:06     Как правильно вызвать функцию? #1
Добрый день.

подскажите как исправить ошибку:

C++
1
2
3
TAsync * Async ;
Async = new TAsync;
ComPort-> WriteStrAsync(ServerEdit->Text,Async );
в результате - сообщение об ошибке во время выполнения - invalid pointer operation.
похоже неверно сделан вызов ComPort-> WriteStrAsync ?

для справки строки из comport.hpp:

C++
1
2
3
4
5
6
7
8
9
//----
int __fastcall WriteStrAsync(const AnsiString Str, PAsync &AsyncPtr);
//---
typedef TAsync *PAsync;
 
class DELPHICLASS TComLink;
class PASCALIMPLEMENTATION TComLink : public System::TObject 
{
typedef System::TObject inherited;
--
Спасибо !
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
14.02.2011, 11:59     Как правильно вызвать функцию? #2
Попробуй звездочку поставить
C++
1
ComPort-> WriteStrAsync(ServerEdit->Text, *Async );
Добавлено через 1 минуту
А ServerEdit к этому моменту существует?
igor-x
0 / 0 / 0
Регистрация: 17.11.2009
Сообщений: 8
14.02.2011, 12:08  [ТС]     Как правильно вызвать функцию? #3
Цитата Сообщение от Day Посмотреть сообщение
Попробуй звездочку поставить
C++
1
ComPort-> WriteStrAsync(ServerEdit->Text, *Async );
Добавлено через 1 минуту
А ServerEdit к этому моменту существует?
без звездочки он не компилировался , поставил звездочку - при выполнении этой команды возникает ошибка "Access violation at address xxxx in module BORLANDMM.DLL. Read of address xxxxx"

ServerEdit - он на форме расположен , TEdit

если заменяю на ComPort->WriteStrAsync("123", *Async ); ошбка таже - "Access violation...."
Asazeus
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 4
09.12.2012, 09:53     Как правильно вызвать функцию? #4
Может кому пригодится..

Нужно писать:
C++
1
2
3
4
5
TAsync* Async;
Async = new TAsync;
InitAsync(Async);
 
ComPort1->WriteStrAsync("стринг",Async);
Elefanov
Сообщений: n/a
16.09.2014, 08:22     Как правильно вызвать функцию? #5
Функция InitAsync самостоятельно выделяет память. По завершению использования вызвать DoneAsync. Правильнее будет так:
C++
1
2
3
TAsync* Async;
InitAsync(Async);
ComPort1->WriteStrAsync("стринг",Async);
Yandex
Объявления
16.09.2014, 08:22     Как правильно вызвать функцию?
Ответ Создать тему
Опции темы

Текущее время: 10:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru