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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2015, 18:54   #1
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию Ansi version of StrLComp is deprecated. Please use AnsiStrings unit.

Доброго дня!
Пользуюсь синапсом, при компиляции выдает предупреждение:

Код:
[dcc32 Warning] synautil.pas(1969): W1000 Symbol 'StrLComp' is deprecated: 'Moved to the AnsiStrings unit'
Добавляю в synautil.pas в uses AnsiStrings, появляются ошибки:

Код:
[dcc32 Error] synautil.pas(1969): E2251 Ambiguous overloaded call to 'StrLComp'
  System.SysUtils.pas(11363): Related method: function StrLComp(const PAnsiChar; const PAnsiChar; Cardinal): Integer;
  System.AnsiStrings.pas(3582): Related method: function StrLComp(const PAnsiChar; const PAnsiChar; Cardinal): Integer;
Как исправить?
nibufep вне форума Ответить с цитированием
Старый 06.11.2015, 20:26   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Добавляю в synautil.pas в uses AnsiStrings
не надо так делать.
начни с того, что глянь в файл synautil.pas, на строку 1969.

чо тама?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 06.11.2015, 20:58   #3
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
чо тама?
Код:
if strlcomp(APtr,#13#10'--',4)=0 then
nibufep вне форума Ответить с цитированием
Старый 06.11.2015, 22:54   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

APtr: тип_какой?

strlcomp() можно заменить на более другую функцию. например на System.SysUtils.CompareText().
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось Stilet; 07.11.2015 в 10:04.
min@y™ вне форума Ответить с цитированием
Старый 06.11.2015, 23:26   #5
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
APtr: тип_какой?
APtr:PANSIChar;
nibufep вне форума Ответить с цитированием
Старый 07.11.2015, 01:31   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

ещё вариант: скопипастить функцию из AnsiStrings.pas прям туда, откуда она вызывается, под другим именем на всякий случай.
Код:
function StrLComp(const Str1, Str2: PAnsiChar; MaxLen: Cardinal): Integer;
var
  I: Cardinal;
  P1, P2: PAnsiChar;
begin
  P1 := Str1;
  P2 := Str2;
  I := 0;
  while I < MaxLen do
  begin
    if (P1^ <> P2^) or (P1^ = #0) then
      Exit(Ord(P1^) - Ord(P2^));

    Inc(P1);
    Inc(P2);
    Inc(I);
  end;
  Result := 0;
end;
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 07.11.2015, 10:06   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
strlcomp() можно заменить на более другую функцию.
Абсолютно согласен
И я чет не совсем понял, разве Делфи не даст сравнивать PAsnsiChar прямо в IF?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.11.2015, 10:28   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
И я чет не совсем понял, разве Делфи не даст сравнивать PAsnsiChar прямо в IF?
так этож указатель ёмаё
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 07.11.2015, 10:40   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
var q,w:PAnsiChar;
begin
 q:='123'; w:='456';
 if q=w then Caption:='1';
end;
Не? Или я где-то нибумбум?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.11.2015, 11:27   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Не? Или я где-то нибумбум?
Скомпили и запусти:
Код:
program cp_284698;

{$apptype console}
//{$optimization off}
{$optimization on}

var
  q, w: PAnsiChar;
  s: string;
begin
  q:= '123';  // указывают на одну и ту же
  w:= '123';  // область памяти (компайлер, сцуко, умный!)

  if q = w
    then writeln(' + equal!')
    else writeln(' - not equal!');

  Str(123, s);
  w:= PAnsiChar(s); // указывает на динамический кусок в куче.

  if q = w
    then writeln(' + equal!')
    else writeln(' - not equal!');

  // как говорят у ВАС в Одессе: "две большие разницы"!
  write('... just feel the difference!');
  readln;
end.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем различия между файлами Unit.cpp и Unit.h? WarHamster Общие вопросы C/C++ 1 14.03.2012 14:25
Перекодировать файл в UTF-8->ANSI, ANSI -> UFT-8 Человек_Борща Общие вопросы Delphi 7 19.05.2011 18:47
Unit DBCtrlsEh was compiled with a different version of CalculatorEh Татьяна_Mystery Компоненты Delphi 1 29.09.2010 08:51
Deprecated: Function session_register() is deprecated Rusl92 PHP 4 05.07.2010 13:15
Ошибка [DCC Fatal Error] Demagog.dpr(10): F2051 Unit StdActns was compiled with a different version of Cl Яр|/||< (^_^) Общие вопросы Delphi 1 23.06.2009 11:42