Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
mika_vazovski
0 / 0 / 0
Регистрация: 01.02.2012
Сообщений: 5
#1

помогите пожалуйста изменить прогу написанную в C++builder, под C++VisualStudio - C++

15.02.2012, 19:58. Просмотров 466. Ответов 1
Метки нет (Все метки)

программа для архивирования графич. файлов писалась на билдере, но у меня он криво работает. Помогите пожалуйста,подскажите где надо переписать, чтобы она нормально работала в VisualStudio. привожу код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include <stdlib.h>
#include <clocale>
#include <iostream>
#include <time.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
using namespace std;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
void sum(bool a);
TForm1 *Form1;
FILE *in, *out;
char FileIn[150];       // имя входного файла(несжатого или сжатого)
char FileOut[150];      //имя выходного файла(сжатого или разархивированого)
unsigned bayt,sb,size;  //читаемые байты , size - длина имени файла
unsigned char k;      //счетчик повторяюшихся байтов
AnsiString s;         //имя входного файла(несжатого или сжатого)
unsigned long int kol_bayt_vx=0,kol_bayt_vbIx=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
unsigned char kol,zap;//счетчик одиноковых байтов
if(OpenDialog1->Execute())
{s=OpenDialog1->FileName;}
 else return;
strcpy(FileIn,s.c_str());
strcpy(FileOut,FileIn);  //создание имени сжатого файла
size=strlen(FileIn);
FileOut[size-4]=0;
strncat(FileOut,"_sg.bmp",7 );
in=fopen(FileIn,"rb");
out=fopen(FileOut,"wb");
k=1;zap=0;
sb=fgetc(in);
while((bayt=fgetc(in))!=EOF)  //АРХИВАЦИЯ
{sum(false);
 if(sb==bayt && k<63){k++;}
   else{if(k>=3 ||(k<=2 && (sb&0xC0)==0xC0)) {zap=3;}
         else{zap=k;}
    switch(zap)
    { case 1:fputc(sb,out);sum(true);break;
      case 2:fputc(sb,out);fputc(sb,out);sum(true);break;
      case 3:kol=(sb&0xC0)|0xC0+k;fputc(kol,out);fputc(sb,out);sum(true);break;
    }
   sb=bayt;k=1;}
}
 if(k>=3 ||(k<=2 && (sb&0xC0)==0xC0)) {zap=3;}
    else{zap=k;}
 switch(zap)
    { case 1:fputc(sb,out);sum(true);break;
      case 2:fputc(sb,out);fputc(sb,out);sum(true);break;
      case 3:kol=(sb&0x00)|0xC0+k;fputc(kol,out);fputc(sb,out);sum(true);break;
    }
 for(int i=1;i<=k;i++)
 {sum(false);}
 PageControl1->ActivePage=TabSheet1;
 Image1->Visible=true;
 Image1->Picture->LoadFromFile(s);
if((fclose(in))==0 && (fclose(out)==0))
 {ShowMessage("Архивация изображения прошло успешно");
   ShowMessage("Файл находится в: "+AnsiString(FileOut));}
 Edit1->Text=kol_bayt_vx;
 Edit2->Text=kol_bayt_vbIx;
 }
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{s=0;in=NULL;out=NULL;
if(OpenDialog2->Execute() && FileExists(OpenDialog2->FileName))
{s=OpenDialog2->FileName;} //имя сжатого файла
else return;
strcpy(FileIn,s.c_str());
strcpy(FileOut,FileIn);  //создание имени разархивированого файла
size=strlen(FileIn);
FileOut[size-6]=0;
strncat(FileOut,"raz.bmp",8 );
in=fopen(FileIn,"rb");
out=fopen(FileOut,"wb");
bayt=0x00;
k=0;
sb=bayt;
while((bayt=fgetc(in))!=EOF)    //РАЗАРХИВАЦИЯ
{ if((bayt&0xC0)!=0xC0){fputc(bayt,out);}
   else{k=bayt&0x3F;     //количество байтов которые нужно записать
        sb=fgetc(in);    //значение байта
        for(int i=1;i<=k;i++)
        {fputc(sb,out); }
         k=0;
        }
 
}
 if((fclose(in))==0 && (fclose(out)==0))
 {ShowMessage("Разархивирование сжатого графического файла прошло успешно!");
   ShowMessage("Нахождение разархивированого файла: "+AnsiString(FileOut));}
PageControl1->ActivePage=TabSheet2;
Image2->Visible=true;
Image2->Picture->LoadFromFile(AnsiString(FileOut));
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 BitBtn4->ShowHint=true;
 BitBtn4->Hint="Очистить";
}
//---------------------------------------------------------------------------
 
void sum(bool a)  //если а=false то считаеться количество байтов в входном файле
{if(a==false){kol_bayt_vx++;}   //если a=true - в выходном файле
else{kol_bayt_vbIx++;}
return;}
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::BitBtn4Click(TObject *Sender)
{
Image1->Visible=false;
Image2->Visible=false;
Edit1->Clear();
Edit2->Clear();
}
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2012, 19:58     помогите пожалуйста изменить прогу написанную в C++builder, под C++VisualStudio
Посмотрите здесь:

Указатели и массивы. Внедрение функции в прогу. C++. Пожалуйста, помогите. - C++
Условие задачи: /* Calculate the length of a string */ #include &lt;stdio.h&gt; #define MAXLINE 30 // String lenght...

народ я написал прогу на С++ а в ней какойто косяк и я не знаю какой!ПОмогите его найти пожалуйста - C++
написать и протестировать функцию,подсчитывающую количество положительных элементов в матрице и их среднеарифметическое значение.(матрица...

Как сделать меню в программе под DOS, написанную в С++3.0? - C++
Уважаемые программеры! Подскажите, как сделать менюшку в программе под DOS, написанную в С++3.0! Я не знаю, с чего начать!Что вообще надо...

Изменить прогу - C++
как изменить условие в программе,чтобы она показывала массив 1 0 2 0 0 3 0 4 2 0 3 0 0 4 0 1 #include &lt;stdio.h&gt; #include...

изменить прогу до не узнаваемости - C++
есть оригинал кода) нужно его изменить чтобы не было похоже друг на друга препод если видит 2 одинаковые или похожие валит обоих

надо изменить прогу - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; void proga (int m) { int h,z,y,x,r,a,i,d,n,w; float...

Прокомментируйте пожалуйста прогу - C++
#include &quot;iostream&quot; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; float f2(float x){ return x+3; ...

Переведите пожалуйста прогу) - C++
Program m3; Uses CRT; Const n=5; m=5; k1=100; k2=k 1 *2+1; Type matr =array of integer; Var a :matr; i, j, f, ma...

Помогите написать прогу.. - C++
Создать программу, которая реализует журнал с оценками в виде двумерного массива (студенты - строки, оценки за контрольные - столбцы)....

Помогите написать прогу. - C++
Написать программу, которая: 1) спрашивает у пользователя имя файла ( .txt); 2) считывает из него 100 символов.; 3) записывает в файл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
15.02.2012, 21:26     помогите пожалуйста изменить прогу написанную в C++builder, под C++VisualStudio #2
winapi вам в помощь
Yandex
Объявления
15.02.2012, 21:26     помогите пожалуйста изменить прогу написанную в C++builder, под C++VisualStudio
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru