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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод с С++ Builder, перевод на С 
:(
    Опции темы
344092
Дата 19.3.2008, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здраствуйте!

Использую Eclipse компилирую GCC 

Как перевести в С++  Unix  // т.к программа будет работать в Linux Графический интерфейс не нужен!

Есть код на С++ Builder

Код

include <vcl.h>
#include <stdio.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
bool ValidNumber(AnsiString & InputValue) {
  char I = 1; //Char imeet razmer 1 bait.
  InputValue = InputValue.Trim();
  if ((InputValue == "") || (InputValue.Pos("000000000000000") > 0)) {
    return false;
  }
  while ((I <= InputValue.Length()) && ((InputValue[I] == '1') ||
                                        (InputValue[I] == '2') ||
                                        (InputValue[I] == '3') ||
                                        (InputValue[I] == '4') ||
                                        (InputValue[I] == '5') ||
                                        (InputValue[I] == '6') ||
                                        (InputValue[I] == '7') ||
                                        (InputValue[I] == '8') ||
                                        (InputValue[I] == '9') ||
                                        (InputValue[I] == '0'))) {
    ++I;
  }
  if (I <= InputValue.Length()) {
    return false;
  } else {
    return true;
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) {
  FILE * dat;
  char ReadData [2500];
  FILE * spr;  //file of longint.
  int n;
  long I, J;
  long LengthData;
  AnsiString s;
  AnsiString LocalString;
  int LocalInteger;
  TDateTime LocalDate;
  long LengthTalk;
  bool DateError;
  char Trans [255];
  char OutData [25];
  int RealSize;
  long Value;
  AnsiString MainPath;
  



  for (I = 0; I <= 255; ++I) {
    Value = 0;
    if ((I & 1) == 1) {
      Value = Value | 0x80;
    }
    if ((I & 0x2) == 2) {
      Value = Value | 0x40;
    }
    if ((I & 0x4) == 4) {
      Value = Value | 0x20;
    }
    if ((I & 0x8) == 8) {
      Value = Value | 0x10;
    }
    if ((I & 0x10) == 0x10) {
      Value = Value | 0x8;
    }
    if ((I & 0x20) == 0x20) {
      Value = Value | 0x4;
    }
    if ((I & 0x40) == 0x40) {
      Value = Value | 0x2;
    }
    if ((I & 0x80) == 0x80) {
      Value = Value | 0x1;
    }
    Trans[I] = Value;
  }

 
  Table1->Close();
  Table1->TableType = ttFoxPro;
  Table1->DatabaseName = MainPath;
  Table1->TableName = "temp.dbf";
  Table1->FieldDefs->Clear();
  Table1->FieldDefs->Clear();

 
  Table1->FieldDefs->Add("OutComing", ftString, 7, false); /
  Table1->FieldDefs->Add("Incoming", ftString, 16, false);
  Table1->FieldDefs->Add("DateTalk", ftString, 8, false);
  Table1->FieldDefs->Add("TimeTalk", ftString, 8, false);
  Table1->FieldDefs->Add("LengthTalk", ftInteger, 0, false);
  Table1->FieldDefs->Add("Inf", ftString, 5, false);
  Table1->CreateTable();

  n = 0;


  dat = fopen("c:\\1.dat", "r");


  spr = fopen("c:\\1.spr", "r");

  
  Table1->Close();
  Table1->DatabaseName = MainPath;
  Table1->TableName = "temp.dbf";  ûé!
  Table1->Open();
  n = 0;
  while (!feof(spr)) {  // ÷èòàåì äî êîíöà spr
    fread(&LengthData, sizeof(long), 1, spr); 
    ++n;
    Form1->Caption = "îáðàáîòêà - " + IntToStr(n) + " 
    RealSize = fread(ReadData, sizeof(long), LengthData, dat);
    //Õ.Ç
    if (RealSize > 2048)
      for (I = 1; I <= 84; ++I) {
        for (J = 1; J <= 24; ++J)
        //----------------------------------dat+spr ----------------------
        OutData[J] = Trans[ReadData[(I-1)*24+J+31]]; 
        Table1->Append();  
        Table1->Edit();
        LocalString = IntToHex(OutData[1], 2)[1];                
        LocalString = LocalString + IntToHex(OutData[1], 2)[2];  // Öèôðà 2        7  
        LocalString = LocalString + IntToHex(OutData[2], 2)[1];  // Öèôðà 3        4
        LocalString = LocalString + IntToHex(OutData[2], 2)[2];  // Öèôðà 4        5
        LocalString = LocalString + IntToHex(OutData[3], 2)[1];  // Öèôðà 5        5
        LocalString = LocalString + IntToHex(OutData[3], 2)[2];  // Öèôðà 6        5
        LocalString = LocalString + IntToHex(OutData[4], 2)[1];  // Öèôðà 7        0
        Table1->FieldByName("OutComing")->AsString = LocalString;
        if (!ValidNumber(LocalString)) {
          Table1->Cancel();
          continue;  
        }
        LocalString = IntToHex(OutData[4], 2)[2];
        LocalString = LocalString + IntToHex(OutData[5], 2)[1];
        LocalString = LocalString + IntToHex(OutData[5], 2)[2];
        LocalString = LocalString + IntToHex(OutData[6], 2)[1];
        LocalString = LocalString + IntToHex(OutData[6], 2)[2];
        LocalString = LocalString + IntToHex(OutData[7], 2)[1];
        LocalString = LocalString + IntToHex(OutData[7], 2)[2];
        LocalString = LocalString + IntToHex(OutData[8], 2)[1];
        LocalString = LocalString + IntToHex(OutData[8], 2)[2];
        LocalString = LocalString + IntToHex(OutData[9], 2)[1];
        LocalString = LocalString + IntToHex(OutData[9], 2)[2];
        LocalString = LocalString + IntToHex(OutData[10], 2)[1];
        LocalString = LocalString + IntToHex(OutData[10], 2)[2];
        LocalString = LocalString + IntToHex(OutData[11], 2)[1];
        LocalString = LocalString + IntToHex(OutData[11], 2)[2];
        LocalString = LocalString + IntToHex(OutData[12], 2)[1];
        LocalInteger = StrToInt(IntToHex(OutData[12], 2)[2] + IntToHex(OutData[13], 2)[1]);
        LocalString = LocalString.SubString(1, LocalInteger);
        if (!ValidNumber(LocalString)) {
          Table1->Cancel();
          continue;
        }  
        Table1->FieldByName("InComing")->AsString = LocalString;
        LocalString = IntToHex(OutData[15], 2)[2];
        LocalString = LocalString + IntToHex(OutData[16], 2)[1] + ".";
        LocalString = LocalString + IntToHex(OutData[14], 2)[2];
        LocalString = LocalString + IntToHex(OutData[15], 2)[1] + ".";
        LocalString = LocalString + IntToHex(OutData[13], 2)[2];
        LocalString = LocalString + IntToHex(OutData[14], 2)[1] + " ";
        LocalString = LocalString + IntToHex(OutData[16], 2)[2];  
        LocalString = LocalString + IntToHex(OutData[17], 2)[1] + ":";
        LocalString = LocalString + IntToHex(OutData[17], 2)[2];
        LocalString = LocalString + IntToHex(OutData[18], 2)[1] + ":";
        LocalString = LocalString + IntToHex(OutData[18], 2)[2];
        LocalString = LocalString + IntToHex(OutData[19], 2)[1];

        try {
          LocalDate = StrToDateTime(LocalString);
        } catch (...) {
         
        }
        LocalString = IntToHex(OutData[19], 2)[2];
        LocalString = LocalString + IntToHex(OutData[20], 2)[1] + ":";
        LocalString = LocalString + IntToHex(OutData[20],2)[2];
        LocalString = LocalString + IntToHex(OutData[21],2)[1] + ":";
        LocalString = LocalString + IntToHex(OutData[21],2)[2];
        LocalString = LocalString + IntToHex(OutData[22],2)[1];
        LengthTalk = StrToInt(IntToHex(OutData[19], 2)[2] + IntToHex(OutData[20], 2)[1]) * 60;
        LengthTalk = (LengthTalk + StrToInt(IntToHex(OutData[20], 2)[2] + IntToHex(OutData[21], 2)[1])) * 60;
        LengthTalk = LengthTalk + StrToInt(IntToHex(OutData[21], 2)[2] + IntToHex(OutData[22], 2)[1]);
        if (LengthTalk > 0)
          Table1->FieldByName("LengthTalk")->AsString = IntToStr(LengthTalk);
        else {
          Table1->Cancel();
          continue;
        }
        LocalDate = LocalDate - StrToTime(LocalString);
        Table1->FieldByName("DateTalk")->AsString = DateToStr(LocalDate);
        Table1->FieldByName("TimeTalk")->AsString = TimeToStr(LocalDate);
        {                                     
          LocalString = IntToHex(OutData[22], 2)[2];
          LocalString = LocalString + IntToHex(OutData[23], 2)[1];
          LocalString = LocalString + IntToHex(OutData[23], 2)[2];
          LocalString = LocalString + IntToHex(OutData[24], 2)[1];
          LocalString = LocalString + IntToHex(OutData[24], 2)[2];
          Table1->FieldByName("Inf")->AsString = LocalString;
        }
        Table1->Post();
    }
  }
  fclose(dat);   
  fclose(spr);
  Table1->Close();      
}
//--



Начал на С Вот так

Код

#include <stdio.h>

int main() {
       //  puts("Hello!");
    FILE* spr = fopen("20080108.spr", "r");
    FILE* dat = fopen("20080108.dat", "r");
    long length_data;
    char read_data[2500];
      
      while (!feof(spr)) {
        fread(&length_data, sizeof(long), 1, spr);
         printf("%d\n", OutData);
        real_size = fread(&read_data,length_data, 1, dat);
        
            // -----------------далее--------






         




        //--------------конец-----------------
               
                
    }
         fclose(spr);
         fclose(dat);
}



Прро dat и spr

Информация выводится блоками по 2Кбайта. Один блок содержит 84 записи, вначале каждого блока записывается 64 нуля ( 32 байта). Одна запись имеет длину 24 байта и содержит поля:
      -номер - 7 знаков,
      -номер  - 16 знаков,
      -количество цифр  - 2 знака,
      -дата в виде год, месяц, день - 6 знаков,
      -время  час, минута, секунда - 6 знаков,
      -длительность час, минута, секунда - 6 знаков,
      -количество - 5 знаков.
1 знак - полбайта. Запись осуществляется в десятичном коде

Dat - информация
Spr- длина и наличие блоков

Это сообщение отредактировал(а) 344092 - 20.3.2008, 13:11
PM MAIL   Вверх
SABROG
Дата 19.3.2008, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

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



Цитата(344092 @  19.3.2008,  12:14 Найти цитируемый пост)
Начал на С++ Вот так


А почему остановился ?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
bsa
Дата 19.3.2008, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



тот код, что ты написал якобы на С++ к С++ не имеет никакого отношения. Это Си.
PM   Вверх
MAKCim
Дата 19.3.2008, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 2
Всего: 207



Цитата(bsa @  19.3.2008,  13:01 Найти цитируемый пост)
тот код, что ты написал якобы на С++ к С++ не имеет никакого отношения

и к юниксу тоже


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
SABROG
Дата 19.3.2008, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

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



Цитата(MAKCim @ 19.3.2008,  17:50)
Цитата(bsa @  19.3.2008,  13:01 Найти цитируемый пост)
тот код, что ты написал якобы на С++ к С++ не имеет никакого отношения

и к юниксу тоже

А с чем это связано ? С отсутствием пустой строки в конце исходника ?

А если C++, то обязательно ifstream ?

Во че нашел  smile 

Это сообщение отредактировал(а) SABROG - 19.3.2008, 18:40


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
bsa
Дата 20.3.2008, 12:27 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(SABROG @ 19.3.2008,  17:58)
А если C++, то обязательно ifstream ?

если явных требований использовать stdio.h нет, то крайне желательно, как и все стандартные С++ вещи (vector, string и пр.) - меньше ошибок будет.

Добавлено через 1 минуту и 34 секунды
А потом, в С++ нужно использовать cstdio вместо stdio.h
PM   Вверх
344092
Дата 18.7.2008, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



как быть с IntToHex в Си нет такого????
PM MAIL   Вверх
SABROG
Дата 18.7.2008, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

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



Цитата(344092 @ 18.7.2008,  16:27)
как быть с IntToHex в Си нет такого????

printf ?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
344092
Дата 23.7.2008, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да Printf похоже подходит , а как объявлять AnsiString;????
PM MAIL   Вверх
Mayk
Дата 23.7.2008, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


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

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



Цитата(344092 @  23.7.2008,  15:44 Найти цитируемый пост)
Да Printf похоже подходит , а как объявлять AnsiString;???? 

std::string


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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