Форум по программированию Delphi Sources

 



Вернуться   Форум по программированию Delphi Sources > C/C++ > C++ Builder
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.12.2015, 18:59
Redstason Redstason вне форума
Новичок
 
Регистрация: 24.02.2007
Сообщения: 57
Репутация: 10
По умолчанию Переписать с Delphi на С++

Здрасте.
Собственно:
Было на Delphi:
Код:
function Matching(StrInputA: WideString;
                  StrInputB: WideString;
                  lngLen: Integer) : TRetCount;
Var
    TempRet   : TRetCount;
    PosStrB   : Integer;
    PosStrA   : Integer;
    StrA      : WideString;
    StrB      : WideString;
    StrTempA  : WideString;
    StrTempB  : WideString;
begin
    StrA := String(StrInputA);
    StrB := String(StrInputB);

    For PosStrA:= 1 To Length(strA) - lngLen + 1 do
    begin
       StrTempA:= System.Copy(strA, PosStrA, lngLen);

       PosStrB:= 1;
       For PosStrB:= 1 To Length(strB) - lngLen + 1 do
       begin
          StrTempB:= System.Copy(strB, PosStrB, lngLen);
          If SysUtils.AnsiCompareText(StrTempA,StrTempB) = 0 Then
          begin
             Inc(TempRet.lngCountLike);
             break;
          end;
       end;
       Inc(TempRet.lngSubRows);
    end; // PosStrA

    Result:= TempRet;
end;

Я переписал на С++.

PHP код:
TRetCount   Matching(WideString StrInputA,WideString StrInputB,int lngLen){
 
TRetCount   TempRet;
 
int  PosStrB,PosStrA ;
 
WideString   StrA,StrB,StrTempA,StrTempB;
 
StrA =StrInputA;
 
StrB StrInputB;
 for(
PosStrA=1;  PosStrA<=(StrA.Length() - lngLen 1);PosStrA++){
   
StrTempA=StrA.SubString(PosStrAlngLen);

   
PosStrB1;
   for(
PosStrB=1PosStrB<=(StrB.Length() - lngLen 1);PosStrB++){
     
StrTempB=StrB.SubString(PosStrBlngLen);
     if (
AnsiCompareText(StrTempA,StrTempB) == 0) {
       
TempRet.lngCountLike=TempRet.lngCountLike+1;
       break;
     }
   }

   
TempRet.lngSubRows=TempRet.lngSubRows+1;
 } 
// PosStrA


    
return TempRet;



Но что-то пошло не так.Может кто увидит , что.

Последний раз редактировалось Redstason, 10.12.2015 в 18:15.
Ответить с цитированием
  #2  
Старый 10.12.2015, 12:37
Redstason Redstason вне форума
Новичок
 
Регистрация: 24.02.2007
Сообщения: 57
Репутация: 10
По умолчанию

Вообще меня смущает вот эти строчки:
Matching.lngCountLike:= TempRet.lngCountLike;
Matching.lngSubRows := TempRet.lngSubRows;

Как их повторить на С++?
Ответить с цитированием
  #3  
Старый 10.12.2015, 15:41
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

А зачем нужно вот это
Код:
   StrA := String(StrInputA);
    StrB := String(StrInputB);
???????
Ответить с цитированием
  #4  
Старый 10.12.2015, 15:46
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

Цитата:
Как их повторить на С++?
Если структура TTempRet содержит только эти два поля, то так, как и написали.
А даже в Delphi надо было написать просто
Код:
 Result:=TempRet;
Ответить с цитированием
  #5  
Старый 10.12.2015, 18:16
Redstason Redstason вне форума
Новичок
 
Регистрация: 24.02.2007
Сообщения: 57
Репутация: 10
По умолчанию

Учел замечания, но это не помогло.
Вопрос в том ,что в сишной функции значения TempRet берутся непонятно откуда
Ответить с цитированием
  #6  
Старый 10.12.2015, 23:01
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,386
Версия Delphi: 7, XE3, 10.2
Репутация: 49088
По умолчанию

А в C не с 0 ли начинаются строки?
Ответить с цитированием
Ответ



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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:01.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2019

ВКонтакте   Facebook   Twitter