Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> переделать код с языка Delphi на язык с++.. 
:(
    Опции темы
RWander
Дата 18.3.2007, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: нет
Всего: 6



Уважаемые знатоки  языка C++, помогите пожалуйста переделать следующий код с языка Delphi на язык с++. smile 

....

type 
    TCoord = Record           // Stores X, Y, Z coordinates
          X, Y, Z : glFLoat;
    end;

.....

Function PosEx(const substr : AnsiString; const s : AnsiString; const start: Integer ) : Integer ;
Type StrRec = record
       allocSiz: Longint;
       refCnt: Longint;
       length: Longint;
     end;
Const  skew = sizeof(StrRec);
asm

        TEST    EAX,EAX
        JE      @@noWork
        TEST    EDX,EDX
        JE      @@stringEmpty
        TEST    ECX,ECX           //cs
        JE      @@stringEmpty     //cs

        PUSH    EBX
        PUSH    ESI
        PUSH    EDI

        MOV     ESI,EAX                         { Point ESI to  }
        MOV     EDI,EDX                         { Point EDI to  }

        MOV     EBX,ECX        //cs save start
        MOV     ECX,[EDI-skew].StrRec.length    { ECX =    }
        PUSH    EDI                             { remember s position to calculate index }

        CMP     EBX,ECX        //cs
        JG      @@fail         //cs

        MOV     EDX,[ESI-skew].StrRec.length    { EDX = bstr)          }

        DEC     EDX                             { EDX = Length(substr) -   }
        JS      @@fail                          { < 0 ? return             }
        MOV     AL,[ESI]                        { AL = first char of       }
        INC     ESI                             { Point ESI to 2'nd char of substr }
        SUB     ECX,EDX                         { #positions in s to look  }
                                                { = Length(s) - Length(substr) + 1      }
        JLE     @@fail
        DEC     EBX       //cs
        SUB     ECX,EBX   //cs
        JLE     @@fail    //cs
        ADD     EDI,EBX   //cs

@@loop:
        REPNE   SCASB
        JNE     @@fail
        MOV     EBX,ECX                         { save outer loop                }
        PUSH    ESI                             { save outer loop substr pointer }
        PUSH    EDI                             { save outer loop s              }

        MOV     ECX,EDX
        REPE    CMPSB
        POP     EDI                             { restore outer loop s pointer      }
        POP     ESI                             { restore outer loop substr pointer }
        JE      @@found
        MOV     ECX,EBX                         { restore outer loop nter    }
        JMP     @@loop

@@fail:
        POP     EDX                             { get rid of saved s nter    }
        XOR     EAX,EAX
        JMP     @@exit

@@stringEmpty:
        XOR     EAX,EAX
        JMP     @@noWork

@@found:
        POP     EDX                             { restore pointer to first char of s    }
        MOV     EAX,EDI                         { EDI points of char after match        }
        SUB     EAX,EDX                         { the difference is the correct index   }
@@exit:
        POP     EDI
        POP     ESI
        POP     EBX
@@noWork:
end;

....

function GetCoords(S : String) : TCoord;
var P, P2 : Integer;
     C : TCoord;
begin
  S := Trim(Copy(S, 3, Length(S)));
  P := Pos(' ', S);
  P2 := PosEx(' ', S, P+1);
  S := StringReplace(S, '.', DecimalSeparator, [rfReplaceAll]);

  C.X :=StrToFloat(Copy(S, 1, P-1));
  C.Y :=StrToFloat(Copy(S, P+1, P2-P-1));
  C.Z :=StrToFloat(Copy(S, P2+1, Length(S)));
  Result :=C;
end;



--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
FelikZ
Дата 18.3.2007, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый Маразматик
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 1.12.2006
Где: Vault 13

Репутация: нет
Всего: 5



Цитата(RWander @  18.3.2007,  16:58 Найти цитируемый пост)
код с языка Delphi

 smile  smile  smile  smile  smile  smile 
Чуть со стула не упал smile Delphi не язык а среда разработки!

А вот код тут, в основном, ассемблерный так что, ИМХО, вам сюды


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: нет
Всего: 6



FelikZ, ха-ха-ха, как смешно.. я вкурсе, что Delphi - это IDE я просто ошибся.., некоторые, кстати, считают, что это язык, но я с ними тоже не согласе, но это не по теме. То, что написанно на ассемблере, переделывать не нужно, главное переписать функцию GetCoords на языке С++. Зараннее спасибо.


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
FelikZ
Дата 18.3.2007, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый Маразматик
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 1.12.2006
Где: Vault 13

Репутация: нет
Всего: 5



ATL юзать можно?(а именно CString?)


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


Опытный
**


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

Репутация: 9
Всего: 23



Delphi object Pascal слегка модернизированный, я склонен думать что
это все-же язык


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
FelikZ
Дата 18.3.2007, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый Маразматик
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 1.12.2006
Где: Vault 13

Репутация: нет
Всего: 5



Если можно ATL то тогда:

Код

#include "atlstr.h"

//...

struct TCoord
{
  float X,Y,Z;
};

TCoord GetCoords(CString S)
{
   int P,P2;
   TCoord C;
   S = S.Trim(S.Mid(3,S.GetLength());
   P = S.Find(' ');
   P2 = PosEx(' ', S.GetBuffer(), P+1);
   
   C.X = atof(S.Mid(1,P-1));
   C.Y = atof(S.Mid(P+1,P2-P-1));
   C.Z = atof(S.Mid(P2+1,S.GetLength()));
   return C;
}


Писал от руки так что не факт что от работает, но сам смысл таков!


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


Вселенский отказник
****


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

Репутация: 3
Всего: 43



Цитата

Delphi не язык а среда разработки!
 Дэлфи — это как среда, так и язык.
Теперь можешь падать со стула.


RWander, легко ведешься.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
FelikZ
Дата 18.3.2007, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый Маразматик
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 1.12.2006
Где: Vault 13

Репутация: нет
Всего: 5



Цитата(nerezus @  18.3.2007,  18:51 Найти цитируемый пост)
Теперь можешь падать со стула.

Это точно?! Меня всегда учили что это среда разработки и неболее...  smile 


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


Опытный
**


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

Репутация: 9
Всего: 23



FelikZ  Лучше код переведи а то я счас через неделю переведу
smile

Опп уже, извиняй

Это сообщение отредактировал(а) apook - 18.3.2007, 19:03


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
RWander
Дата 18.3.2007, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: нет
Всего: 6



Цитата(FelikZ @  18.3.2007,  18:48 Найти цитируемый пост)
Если можно ATL то тогда:

А ATL можно использовать в C++ Builder? Если нет, то как можно написать иначе.



--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
FelikZ
Дата 18.3.2007, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старый Маразматик
**


Профиль
Группа: Участник
Сообщений: 380
Регистрация: 1.12.2006
Где: Vault 13

Репутация: нет
Всего: 5



Цитата(RWander @  18.3.2007,  20:08 Найти цитируемый пост)
 ATL можно использовать в C++ Builder

В билдере не работал. Может и есть... Но уверен, что там должен быть аналог CString'у в ATL.


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


Вселенский отказник
****


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

Репутация: 3
Всего: 43



Цитата

Это точно?!
 Да, до 7 версии языком был Object Pascal, а с седьмолй версии — Delphi.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
console
Дата 18.3.2007, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 307
Регистрация: 12.2.2007
Где: Belarus::Minsk

Репутация: 1
Всего: 3



Цитата с WikiPedia  smile 
Цитата

Начиная с Delphi 7 фирма Borland начала официально называть свой язык Delphi .


Это сообщение отредактировал(а) console - 18.3.2007, 23:03


--------------------
user posted image
Nothing is impossible
My WeBlog
PM MAIL WWW ICQ   Вверх
RWander
Дата 19.3.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: нет
Всего: 6



console, 
nerezus,   smile  тема то не об этом

лучше помогите перевести код smile 


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
Greeen
Дата 19.3.2007, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 18



У Билдера есть AnsiString.


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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