С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

15.02.2012, 19:58. Просмотров 485. Ответов 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();
}
//---------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2012, 19:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос помогите пожалуйста изменить прогу написанную в C++builder, под C++VisualStudio (C++):

Указатели и массивы. Внедрение функции в прогу. 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...

1
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
15.02.2012, 21:26 #2
winapi вам в помощь
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2012, 21:26
Привет! Вот еще темы с ответами:

Переведите пожалуйста прогу) - 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++
#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++
Создать программу, которая реализует журнал с оценками в виде двумерного массива (студенты - строки, оценки за контрольные - столбцы)....

помогите написать прогу - C++
написать прогу вычисления S={ (1n-2n^2)/(1+2n), pcn-2n^2≤1 2(n-2n^2) n1-2n^2


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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