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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2012, 07:38   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос RichView. E2033 Types of actual and formal var parameters must be identical

Из *.pas для Delphi 7
Код:
    procedure GetPictureInfo(ItemNo: Integer; var AName: String;
                            var Agr: TGraphic; var AVAlign: TRVVAlign;
                            var ATag: Integer);
из *.pas для Delphi 2010
Код:
    procedure GetPictureInfo(ItemNo: Integer; var AName: TRVAnsiString;
                            var Agr: TGraphic; var AVAlign: TRVVAlign;
                            var ATag: Integer);
Ещё сказано в справке по RichView
TRichView Reference | Types
TRVAnsiString Type Top Previous Next

Unit RVTypes.
Declaration for Delphi 2009 or newer:
TRVAnsiString = type AnsiString;
Declaration for older versions of Delphi:
TRVAnsiString = type String;
Strings of this type contain ANSI text.

Имею
Код:
function GetSendText(cv: TRichViewEdit): string;
var
  i: Integer;
  VAlign: TRVValign;
  Name: AnsiString; // Как сказано в Help
  Tag: Integer;
  gr: TGraphic;
  SendTx: string;
begin
  SendTx := '';

  try
    for i := 0 to cv.ItemCount - 1 do
    if cv.GetItemStyle(i) = rvsPicture then
    begin
      if cv.IsFromNewLine(i) then
      if SendTx <> '' then SendTx := SendTx + #$D; // #13#10
      cv.GetPictureInfo(i, Name, gr, VAlign, Tag); // Name - E2033 Types of actual and formal var parameters must be identical (типы фактических и формальных параметров VAR должны быть одинаковыми)
      if ItSmile(Name) then SendTx := SendTx + Name;
    end
    else
    begin
      if cv.IsFromNewLine(i) then
      if SendTx <> '' then SendTx := SendTx + #$D; // #13#10
      SendTx := SendTx + cv.GetItemTextA(i);
    end;
  except
  end;

  Result := SendTx;
end;
Не пойму как разрулить ситуацию.
Shouldercannon вне форума Ответить с цитированием
Старый 05.06.2012, 07:43   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Опиши и всех делов, и имя Name лучше не использовать
Код:
var Name: TRVAnsiString;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.06.2012, 08:05   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Опиши и всех делов, и имя Name лучше не использовать
Код:
var Name: TRVAnsiString;
Оказывается правильно делал, только не хватало модуля RVTypes.
Shouldercannon вне форума Ответить с цитированием
Старый 05.06.2012, 08:33   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Тажа проблема, но в другом месте.
Код:
  TRVItemHintEvent = procedure (Sender: TCustomRichView;
    RVData: TCustomRVData; ItemNo: Integer; var HintText: String) of object;
...
procedure TFormMain.SendRVEditItemHint(Sender: TCustomRichView;
  RVData: TCustomRVData; ItemNo: Integer; var HintText: String);
var
  gr: TGraphic;
  VAlign: TRVValign;
  Tag: Integer;
begin
  if Sender.GetItemStyle(ItemNo) = rvsPicture then Sender.GetPictureInfo(ItemNo, HintText, gr, VAlign, Tag); // E2033 Types of actual and formal var parameters must be identical
end;
В GetPictureInfo
Код:
var AName: TRVAnsiString;
А в OntemHint
Код:
var HintText: String
Скорее всего нужно преобразование String в TRVAsniString или нет?
Shouldercannon вне форума Ответить с цитированием
Старый 05.06.2012, 08:39   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Для var-параметров совпадение типов обязательно всегда и везде. Заводи другую переменную
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.06.2012, 09:02   #6
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Разобрался
Код:
procedure TFormMain.SendRVEditItemHint(Sender: TCustomRichView;
  RVData: TCustomRVData; ItemNo: Integer; var HintText: String);
var
  VAlign: TRVValign;
  Name: TRVAnsiString;
  Tag: Integer;
  gr: TGraphic;
begin
  if Sender.GetItemStyle(ItemNo) = rvsPicture then Sender.GetPictureInfo(ItemNo, Name, gr, VAlign, Tag);
  HintText := Name; // Вот оно для чего нужно было. Сие всплывающая подсказка
end;

Последний раз редактировалось Shouldercannon; 05.06.2012 в 09:48.
Shouldercannon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка - [Error] GraphUnit.pas(104): Types of actual and formal var parameters must be identical Ash Общие вопросы Delphi 8 30.10.2012 21:01
Delphi, Not enough actual parameters, шифрование Flaina Помощь студентам 3 21.02.2012 22:53
[Error] Project2.dpr(36): Types of actual and formal var parameters must be identical vadiprog Помощь студентам 1 15.11.2011 21:35
ошибка Not enough actual parameters veram Софт 1 13.10.2010 10:51
Not enough actual parameters ZhekON Общие вопросы Delphi 7 01.02.2007 15:26