Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102

Перевод кода с С++ в C#

04.08.2014, 09:18. Показов 2679. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста! Надо перевести код с С++ на С# , очень нужно, буду благодарен!
Собственно, вот код:
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
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <dos.h>
#include <ctype.h>
#include <conio.h>
 
struct PARS_OF_WRITE_FILE
{
char Code [20];//20 байт- «3571090,7859525»
char PlataName[17]; // 17 байт – название платы
char TimeString[26]; // 26 байт – число и время завершения ввода данных
int ChannelsMax; // 2 байта – общее число каналов для выбранной платы
int RealChannelsQuantity; // 2 байта – число введенных (активных) каналов
long RealKadrsQuantity; // 4 байта – устаревший параметр
long RealSamplesQuantity; // 4 байта – устаревший кадр
double TotalTime; // 8 байт – время ввода в секундах в формате ‘DOUBLE’
float AdcRate; // 4 байта – частота АЦП в кГц в формате ‘FLOAT’
float InterkadrDelay; // 4 байта – межкадровая задержка в мс в формате ‘FLOAT’
float ChannelRate; // 4 байта – частота сбора данных с одного канала в кГц в формате ‘FLOAT’
unsigned char ActiveAdcChannelArray[32]; // 1 байт *32 – массив , каждый элемент которого равен нулю или единице, единичное значение соответствует тому, что данный вход активен 
unsigned char AdcChannelArray[32]; // 1 байт *32- массив, каждый элемент которого равен номеру канала АЦП для соответствующего входа 
unsigned char AdcGainArray[32]; // 1 байт*32-массив, каждый элемент которого равен индексу коэффициенту  усиления(0,1,2 или 3)
unsigned char IsSignalArray[32]; // 1 байт*31-массив, каждый элемент которого равен 0 или 1, единичное значение соответствует тому, что данный канал был заземлён на плате
};
//------------------------------------------------------------------------
// Ћб*®ў**п Їа®Ја*¬¬*
//------------------------------------------------------------------------
int main(int n_p, char **str_p)
{
    unsigned char sourcefile[20];
    unsigned char parsfile[20];
    unsigned char targetfile[20];
    char stroka[77], *endptr;
    int DataVal;
    unsigned long i, NPoints, error;
    FILE *fpsource, *fptarget, *fpfilepars;
    PARS_OF_WRITE_FILE DataPars;
 
    puts(   " File converter from 'bin' format to 'text' for L-Graph data files.\n"
            " Copyright (c) 2000 L-Card Ltd.\n"
            " Usage: convert.exe  [filename[.dat]]\n");
 
    if(n_p != 2) { puts("\n ------- ERROR1!!!\n\n"); exit(1); }
 
    // бзЁв*Ґ¬ **§ў**ЁҐ д*©«*
    strcpy(sourcefile, str_p[n_p-1]);
    strcpy(parsfile, str_p[n_p-1]);
    strcpy(targetfile, str_p[n_p-1]);
 
    // д*©« Ёб室*ле ЎЁ**а*ле ¤***ле
    if(!(endptr=strchr(sourcefile,'.'))) strcat(sourcefile, ".dat");
    else { strlwr(endptr); if(strcmp(endptr, ".dat")) { puts("\n File extention must be '.dat'!"); exit(1); }   }
 
    // д*©« Ї*а*¬Ґва®ў д*©«* ¤***ле
    if(!(endptr=strchr(parsfile,'.'))) strcat(parsfile, ".par");
    else { *endptr=0; strcat(parsfile, ".par"); }
 
    // д*©« Є®*Ґз*ле ⥪бв®ўле ¤***ле
    if(!(endptr=strchr(targetfile,'.'))) strcat(targetfile, ".txt");
    else { *endptr=0; strcat(targetfile, ".txt"); }
 
    fpsource=fopen(sourcefile, "rb");
    if(fpsource == NULL)    { printf("\n  Can't find %s!\n", sourcefile);   exit(1); }
 
    fpfilepars=fopen(parsfile, "rb");
    if(fpfilepars == NULL)  { printf("\n  Can't find %s!\n", parsfile); exit(1); }
 
    fptarget=fopen(targetfile, "wt");
    if(fptarget == NULL)    { printf("\n  Can't open %s!\n", targetfile); exit(1); }
 
    if(sizeof(PARS_OF_WRITE_FILE) != fread(&DataPars, 1, sizeof(PARS_OF_WRITE_FILE), fpfilepars))
        { puts("\n  ------- ERROR2!!!\n\n"); exit(1); }
 
// Їа®ўҐаЄ* д*©«* *.par ??????
 
    NPoints=DataPars.RealSamplesQuantity;
    for(i=error=0; i < NPoints; i++)
    {
        fread(&DataVal, 2, 1, fpsource);
        sprintf(stroka, "%7i", DataVal);
        if(((long)(i+1))%DataPars.RealChannelsQuantity) strcat(stroka, "    ");
        else strcat(stroka, "\n");
        fputs(stroka, fptarget);
        if(!(i%100000L)) { if(kbhit()) { error=1; break; } printf(" Sample %ld from %ld\r", i, NPoints); }
    }
 
    fclose(fpsource);
    fclose(fpfilepars);
    fclose(fptarget);
 
    if(error) printf("\n\n  ------- O-O-O-P-S!!!\n");
    else printf("\n\n   ------- SUCCESS!!!\n");
 
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.08.2014, 09:18
Ответы с готовыми решениями:

Перевод кода с Паскаля (перевод в метры)
var a,b,d:integer; c,e:real; begin writeln('1-дециметр 2-километр'); writeln('3-метр 4-миллиметр'); ...

Перевод кода из C в C#
Можете пожалуйста помочь перевести данный код на языке С в C#? extern unsigned long long getcyclecount(); /* This code is based on...

Перевод кода с C++
#include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;cmath&gt; using namespace std; #define x first #define y second int main...

27
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
04.08.2014, 09:54
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
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)]
internal struct PARS_OF_WRITE_FILE
{
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)] 
    public char []Code; //20 байт- «3571090,7859525»
 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 17)] 
    public char []PlataName; // 17 байт – название платы
 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 26)] 
    public char []TimeString; // 26 байт – число и время завершения ввода данных
 
    public int ChannelsMax; // 2 байта – общее число каналов для выбранной платы
    public int RealChannelsQuantity; // 2 байта – число введенных (активных) каналов
    public long RealKadrsQuantity; // 4 байта – устаревший параметр
    public long RealSamplesQuantity; // 4 байта – устаревший кадр
    public double TotalTime; // 8 байт – время ввода в секундах в формате ‘DOUBLE’
    public float AdcRate; // 4 байта – частота АЦП в кГц в формате ‘FLOAT’
    public float InterkadrDelay; // 4 байта – межкадровая задержка в мс в формате ‘FLOAT’
    public float ChannelRate; // 4 байта – частота сбора данных с одного канала в кГц в формате ‘FLOAT’
   
     [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] 
    public char []ActiveAdcChannelArray;
        // 1 байт *32 – массив , каждый элемент которого равен нулю или единице, единичное значение соответствует тому, что данный вход активен 
 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] 
    public char []AdcChannelArray;
        // 1 байт *32- массив, каждый элемент которого равен номеру канала АЦП для соответствующего входа 
 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] 
    public char []AdcGainArray;
        // 1 байт*32-массив, каждый элемент которого равен индексу коэффициенту  усиления(0,1,2 или 3)
 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] 
    public char []IsSignalArray;
        // 1 байт*31-массив, каждый элемент которого равен 0 или 1, единичное значение соответствует тому, что данный канал был заземлён на плате
}
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
    using System;
    using System.IO;
    using System.Runtime.InteropServices;
 
    class Program
{
     [DllImport("crtdll.dll")]
     public static extern int _kbhit();
 
     private static void Main()
     {
 
         string sourcefile = "";// ......;
         string parsfile = "";//......;
         string targetfile = "";// ......;
 
         string stroka;
         int endptr;
         int DataVal;
         ulong i, NPoints, error;
 
         //  FILE *fpsource, *fptarget, *fpfilepars;
         PARS_OF_WRITE_FILE DataPars;
 
         Console.WriteLine(@" File converter from 'bin' format to 'text' for L-Graph data files.\n
             Copyright (c) 2000 L-Card Ltd.\n
             Usage: convert.exe  [filename[.dat]]\n");
 
         if ((endptr = sourcefile.IndexOf('.')) == -1)
             sourcefile += ".dat";
         else
         {
             string sub = sourcefile.Substring(endptr);
             sub.ToLower();
             if (sub != ".dat")
             {
                 Console.WriteLine("\n File extention must be '.dat'!");
                 return;
             }
         }
 
         if ((endptr = parsfile.IndexOf('.')) == -1)
             parsfile += ".par";
 
       
         if ((endptr = targetfile.IndexOf('.')) == -1)
             targetfile += ".txt";
 
         //  fpsource=fopen(sourcefile, "rb");
         if (!File.Exists(sourcefile))
         {
             Console.WriteLine("\n  Can't find {0}!\n", sourcefile);
             return;
         }
 
         // fpfilepars=fopen(parsfile, "rb");
         if (!File.Exists(parsfile))
         {
             Console.WriteLine("\n  Can't find {0}!\n", parsfile);
             return;
         }
 
         //   fptarget=fopen(targetfile, "wt");
         if (!File.Exists(targetfile))
         {
             Console.WriteLine("\n  Can't find {0}!\n", targetfile);
             return;
         }
 
         //if(sizeof(PARS_OF_WRITE_FILE) != fread(&DataPars, 1, sizeof(PARS_OF_WRITE_FILE), fpfilepars))
 
         using (FileStream fpfilepars = new FileStream(parsfile, FileMode.Open))
         {
             var sz = Marshal.SizeOf(typeof(PARS_OF_WRITE_FILE));
             var buffer = new byte[sz];
             fpfilepars.Read(buffer, 0, sz);
             var pinnedBuffer = GCHandle.Alloc(buffer, GCHandleType.Pinned);
             DataPars = (PARS_OF_WRITE_FILE)Marshal.PtrToStructure(
                 pinnedBuffer.AddrOfPinnedObject(), typeof(PARS_OF_WRITE_FILE));
             pinnedBuffer.Free();
         }
 
        
         using (StreamWriter fptarget = new StreamWriter(targetfile))
         using (FileStream fpsource = new FileStream(parsfile, FileMode.Open))
         {
             using (BinaryReader binRead = new BinaryReader(fpsource))
             {
                 NPoints = (ulong)DataPars.RealSamplesQuantity;
                 for (i = error = 0; i < NPoints; i++)
                 {
                     // fread(&DataVal, 2, 1, fpsource); // sourcefile
                     DataVal = binRead.ReadInt32();
                     stroka = String.Concat("     ", DataVal);
                     if (((long)(i + 1)) % DataPars.RealChannelsQuantity != 0)
                         stroka += "    ";
                     else stroka += "\n";
                     fptarget.WriteLine(stroka);
                     if (i % 100000L == 0)
                     {
                         if (_kbhit() != 0)
                         {
                             error = 1;
                             break;
                         }
                         Console.WriteLine(" Sample {0} from {1}", i, NPoints);
                     }
                 }
             }
         }
 
         if (error != 0)
             Console.WriteLine("\n\n  ------- O-O-O-P-S!!!\n");
         else
             Console.WriteLine("\n\n   ------- SUCCESS!!!\n");
может где накосячил , попозже пересмотрю
работоспособность не проверял .
2
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
04.08.2014, 11:25  [ТС]
MrCold, большое спасибо, выручил, вроде бы рабочий, по крайней мере без ошибок
а можешь ещё выручить ? перевести с Си вот этот код
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
fwrite(OldLgraphPars.NewCode, 20, 1, fp); 
fwrite(OldLgraphPars.PlataName, 17, 1, fp); 
fwrite(OldLgraphPars.TimeString, 26, 1, fp); 
fwrite(&OldLgraphPars.ChannelsMax, 2, 1, fp); 
fwrite(&OldLgraphPars.RealChannelsQuantity, 2, 1, fp); 
fwrite(&OldLgraphPars.RealKadrsQuantity, 4, 1, fp); 
fwrite(&OldLgraphPars.RealSamplesQuantity, 4, 1, fp); 
fwrite(&OldLgraphPars.TotalTime, 8, 1, fp); 
fwrite(&OldLgraphPars.AdcRate, 4, 1, fp); 
fwrite(&OldLgraphPars.InterkadrDelay, 4, 1, fp); 
fwrite(&OldLgraphPars.ChannelRate, 4, 1, fp); 
fwrite(OldLgraphPars.ActiveAdcChannelArray, 32, 1, fp); 
fwrite(OldLgraphPars.AdcChannelArray, 32, 1, fp); 
fwrite(OldLgraphPars.AdcGainArray, 32, 1, fp); 
fwrite(OldLgraphPars.IsSignalArray, 32, 1, fp); 
fwrite(&OldLgraphPars.DataFormat, 4, 1, fp); 
fwrite(&OldLgraphPars.RealKadrs64, 8, 1, fp); 
fwrite(&OldLgraphPars.CalibrScale, 8*32, 1, fp); 
fwrite(&OldLgraphPars.CalibrOffset, 8*32, 1, fp); 
fwrite(ChannelSetting.offset, 1024*8, 1, fp); 
fwrite(ChannelSetting.scale, 1024*8, 1, fp); 
fwrite(&SegmentsN, 4, 1, fp); 
for(i=0; i < SegmentsN; i++) 
{ 
fwrite(&Segments[i].kadrs, 8, 1, fp); 
fwrite(&Segments[i].time, sizeof(time_t), 1, fp); 
fwrite(&SegmentsNew[i][index]->sec_offset, sizeof(double), 1, fp); 
fwrite(&SegmentsNew[i][index]->type, sizeof(int), 1, fp); comment_on=(Segments[i].comment[0]) ? 1 : 0; 
fwrite(&comment_on, 1, 1, fp); 
if(comment_on) fwrite(Segments[i].comment, 256, 1, fp); 
} 
fwrite(&OldGpsRmc, sizeof(struct GpsRmcStr), 1, fp);
Добавлено через 21 минуту
MrCold, аа, понял почему без ошибок, закоменчены строки
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
04.08.2014, 12:59
Вот ошибка
Цитата Сообщение от MrCold Посмотреть сообщение
// fread(&DataVal, 2, 1, fpsource); // sourcefile
* * * * * * * * * * *DataVal = binRead.ReadInt32();
Там 2 байта нужно считать
C#
1
2
  // fread(&DataVal, 2, 1, fpsource); // sourcefile
                     DataVal = binRead.ReadInt16();
1
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
04.08.2014, 13:25  [ТС]
MrCold,
Цитата Сообщение от MrCold Посмотреть сообщение
// *FILE *fpsource, *fptarget, *fpfilepars;
а вот это как будет ? и последующие строки
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
04.08.2014, 13:29
Все уже реализовано
C#
1
2
3
4
5
6
7
8
9
10
11
   // *fpfilepars;
  using (FileStream fpfilepars = new FileStream(parsfile, FileMode.Open))
     
 
  //*fptarget, 
  using (StreamWriter fptarget = new StreamWriter(targetfile))
 
//    fpsource
  using (FileStream fpsource = new FileStream(parsfile, FileMode.Open))
    {
     using (BinaryReader binRead = new BinaryReader(fpsource))
Добавлено через 1 минуту
там уже все готово
2
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
04.08.2014, 13:31  [ТС]
MrCold, а, всё понял , ступил, спасибо большое!

Добавлено через 44 секунды
MrCold, а с Си кодом помочь сможешь ? Очень выручишь
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
04.08.2014, 13:35
Там в С++ коде имена файлов из командной строки получаете,
я спешил так оставил.
C#
1
2
3
 string sourcefile = "";// ......;
         string parsfile = "";//......;
         string targetfile = "";// ......;
Добавлено через 2 минуты
Так эти переменные где ? OldGpsRmc ..... там типы надо знать
struct GpsRmcStr
1
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
04.08.2014, 13:37  [ТС]
MrCold,
Цитата Сообщение от MrCold Посмотреть сообщение
Так эти переменные где ? OldGpsRmc ..... там типы надо знать
struct GpsRmcStr
последняя строчка, так..
вот :
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int n; //  число пакетов от GPS  приемника
int utc_hour;
int utc_min;
int utc_sec;
int utc_day;
int utc_month;
int utc_year;
char latitude[16];
char latitude_h;
char longitude[16];
char longitude_h;
char speed[16];
char course[16]
char magnetic[16];
char mafnetic_direction;
char status;
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
04.08.2014, 14:38
Наугад , на ощупь как то так
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
       string fileName = "myfile.dat";
         if (File.Exists(fileName))
         {
             Console.WriteLine(fileName + " already exists!");
             return;
         }
 
         using (FileStream fs = new FileStream(fileName, FileMode.CreateNew))
         using (BinaryWriter writer = new BinaryWriter(fs))
         {
 
 
             /////////////////////////
             writer.Write(OldLgraphPars.NewCode);
             writer.Write(OldLgraphPars.PlataName);
             writer.Write(OldLgraphPars.TimeString);
             writer.Write(OldLgraphPars.ChannelsMax);
             writer.Write(OldLgraphPars.RealChannelsQuantity);
             writer.Write(OldLgraphPars.RealKadrsQuantity);
             writer.Write(OldLgraphPars.RealSamplesQuantity);
             writer.Write(OldLgraphPars.TotalTime);
             writer.Write(OldLgraphPars.AdcRate);
             writer.Write(OldLgraphPars.InterkadrDelay);
             writer.Write(OldLgraphPars.ChannelRate);
             writer.Write(OldLgraphPars.ActiveAdcChannelArray);
             writer.Write(OldLgraphPars.AdcChannelArray);
             writer.Write(OldLgraphPars.AdcGainArray);
             writer.Write(OldLgraphPars.IsSignalArray);
             writer.Write(OldLgraphPars.DataFormat);
             writer.Write(OldLgraphPars.RealKadrs64);
             writer.Write(OldLgraphPars.CalibrScale);
             writer.Write(OldLgraphPars.CalibrOffset);
             writer.Write(ChannelSetting.offset);
             writer.Write(ChannelSetting.scale);
             writer.Write(SegmentsN);
 
             for (i = 0; i < SegmentsN; i++)
             {
                 writer.Write(Segments[i].kadrs);
                 writer.Write(Segments[i].time);
                 writer.Write(SegmentsNew[i, index].sec_offset);
                 writer.Write(SegmentsNew[i, index].type);
                 comment_on = (Segments[i].comment[0]) ? 1 : 0;
                 writer.Write(comment_on);
                 if (comment_on)
                     writer.Write(Segments[i].comment);
             }
             byte[] buffer = new byte[Marshal.SizeOf(typeof(GpsRmcStr))];
             GCHandle h = GCHandle.Alloc(buffer, GCHandleType.Pinned);
             Marshal.StructureToPtr(OldGpsRmc, h.AddrOfPinnedObject(), false);
             writer.Write(buffer);
             h.Free();
 
//////////////////////////////////
 
         }
1
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
04.08.2014, 14:41  [ТС]
MrCold, большое спасибо!
0
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
08.08.2014, 14:37  [ТС]
Здравствуйте! Помогите пожалуйста, нужно перевести вот такой код с С++
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
//=============================================================================
// Џа®Ја*¬¬* Є®*ўҐав*жЁЁ ЎЁ**а*ле *.dat д*©«®ў L-Graph ў ⥪бв®ў*© д®а¬*в *.txt
//=============================================================================
 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <dos.h>
#include <ctype.h>
#include <conio.h>
 
struct PARS_OF_WRITE_FILE
{
    char Code[20];             // 20 Ў*©в  - "2571090,1618190     "
    char PlataName[17];        // 17 Ў*©в  - **§ў**ЁҐ Ї«*вл
    char TimeString[26];       // 26 Ў*©в  - зЁб«® Ё ўаҐ¬п §*ўҐаиҐ*Ёп ўў®¤* ¤***ле
    int ChannelsMax;           // 2 Ў*©в*  - ®ЎйҐҐ зЁб«® Є***«®ў ¤«п ўлЎа***®© Ї«*вл
    int RealChannelsQuantity;  // 2 Ў*©в*  - зЁб«® ўўҐ¤Ґ**ле (*ЄвЁў*ле) Є***«®ў
    long  RealKadrsQuantity;   // 4 Ў*©в*  - зЁб«® б®Ўа***ле Є*¤а®ў ў д®а¬*⥠'int' (< 2.147.483.648)
    long  RealSamplesQuantity; // 4 Ў*©в*  - зЁб«® б®Ўа***ле ®вбзҐв®ў ў д®а¬*⥠'int' (< 2.147.483.648)
    double TotalTime;          // 8 Ў*©в   - ўаҐ¬п ўў®¤* ў cҐЄг*¤*е ў д®а¬*⥠'DOUBLE'
    float AdcRate;             // 4 Ў*©в*  - з*бв®в* Ђ–Џ ў Єѓж ў д®а¬*⥠'FLOAT'
    float InterkadrDelay;      // 4 Ў*©в*  - ¬Ґ¦Є*¤а®ў*п §*¤Ґа¦Є* ў ¬«б ў д®а¬*⥠'FLOAT'
    float ChannelRate;         // 4 Ў*©в*  - з*бв®в* бЎ®а* ¤***ле б ®¤*®Ј® Є***«* ў Єѓж ў д®а¬*⥠'FLOAT'
    unsigned char  ActiveAdcChannelArray[32];   // 1Ў*©в*32 - ¬*ббЁў, Є*¦¤л© н«Ґ¬Ґ*в
                                                            // Є®в®а®Ј® а*ўҐ* *г«о Ё«Ё Ґ¤Ё*ЁжҐ, Ґ¤Ё*Ёз*®Ґ §**зҐ*ЁҐ
                                                            // ᮮ⢥вбвўгҐв ⮬г, зв® ¤***л© ўе®¤ *ЄвЁўҐ*
    unsigned char  AdcChannelArray[32]; // 1Ў*©в*32 - ¬*ббЁў, Є*¦¤л© н«Ґ¬Ґ*в
                                                    // Є®в®а®Ј® а*ўҐ* *®¬Ґаг Є***«* Ђ–Џ ¤«п ᮮ⢥вбвўго饣® ўе®¤*
    unsigned char  AdcGainArray[32];    //1Ў*©в**32 - ¬*ббЁў, Є*¦¤л© н«Ґ¬Ґ*в Є®в®а®Ј®
                                                    // а*ўҐ* Ё*¤ҐЄбг Є®нддЁжЁҐ*вг гбЁ«Ґ*Ёп (0,1,2 Ё«Ё 3)
    unsigned char  IsSignalArray[32];   //1Ў*©в**32 - ¬*ббЁў, Є*¦¤л© н«Ґ¬Ґ*в Є®в®а®Ј®
                                                    // Є®в®а®Ј® а*ўҐ* *г«о Ё«Ё Ґ¤Ё*ЁжҐ, Ґ¤Ё*Ёз*®Ґ §**зҐ*ЁҐ
                                                    // ᮮ⢥вбвўгҐв ⮬г, зв® ¤***л© Є***« Ўл« §*§Ґ¬«Ґ* ** Ї«*вҐ
};
 
//------------------------------------------------------------------------
// Ћб*®ў**п Їа®Ја*¬¬*
//------------------------------------------------------------------------
int main(int n_p, char **str_p)
{
    unsigned char sourcefile[20];
    unsigned char parsfile[20];
    unsigned char targetfile[20];
    char stroka[77], *endptr;
    int DataVal;
    unsigned long i, NPoints, error;
    FILE *fpsource, *fptarget, *fpfilepars;
    PARS_OF_WRITE_FILE DataPars;
 
    puts(   " File converter from 'bin' format to 'text' for L-Graph data files.\n"
            " Copyright (c) 2000 L-Card Ltd.\n"
            " Usage: convert.exe  [filename[.dat]]\n");
 
    if(n_p != 2) { puts("\n ------- ERROR1!!!\n\n"); exit(1); }
 
    // бзЁв*Ґ¬ **§ў**ЁҐ д*©«*
    strcpy(sourcefile, str_p[n_p-1]);
    strcpy(parsfile, str_p[n_p-1]);
    strcpy(targetfile, str_p[n_p-1]);
 
    // д*©« Ёб室*ле ЎЁ**а*ле ¤***ле
    if(!(endptr=strchr(sourcefile,'.'))) strcat(sourcefile, ".dat");
    else { strlwr(endptr); if(strcmp(endptr, ".dat")) { puts("\n File extention must be '.dat'!"); exit(1); }   }
 
    // д*©« Ї*а*¬Ґва®ў д*©«* ¤***ле
    if(!(endptr=strchr(parsfile,'.'))) strcat(parsfile, ".par");
    else { *endptr=0; strcat(parsfile, ".par"); }
 
    // д*©« Є®*Ґз*ле ⥪бв®ўле ¤***ле
    if(!(endptr=strchr(targetfile,'.'))) strcat(targetfile, ".txt");
    else { *endptr=0; strcat(targetfile, ".txt"); }
 
    fpsource=fopen(sourcefile, "rb");
    if(fpsource == NULL)    { printf("\n  Can't find %s!\n", sourcefile);   exit(1); }
 
    fpfilepars=fopen(parsfile, "rb");
    if(fpfilepars == NULL)  { printf("\n  Can't find %s!\n", parsfile); exit(1); }
 
    fptarget=fopen(targetfile, "wt");
    if(fptarget == NULL)    { printf("\n  Can't open %s!\n", targetfile); exit(1); }
 
    if(sizeof(PARS_OF_WRITE_FILE) != fread(&DataPars, 1, sizeof(PARS_OF_WRITE_FILE), fpfilepars))
        { puts("\n  ------- ERROR2!!!\n\n"); exit(1); }
 
// Їа®ўҐаЄ* д*©«* *.par ??????
 
    NPoints=DataPars.RealSamplesQuantity;
    for(i=error=0; i < NPoints; i++)
    {
        fread(&DataVal, 2, 1, fpsource);
        sprintf(stroka, "%7i", DataVal);
        if(((long)(i+1))%DataPars.RealChannelsQuantity) strcat(stroka, "    ");
        else strcat(stroka, "\n");
        fputs(stroka, fptarget);
        if(!(i%100000L)) { if(kbhit()) { error=1; break; } printf(" Sample %ld from %ld\r", i, NPoints); }
    }
 
    fclose(fpsource);
    fclose(fpfilepars);
    fclose(fptarget);
 
    if(error) printf("\n\n  ------- O-O-O-P-S!!!\n");
    else printf("\n\n   ------- SUCCESS!!!\n");
 
    return 0;
}
его уже здесь переводили, но к сожалению не правильно, прошу о помощи, буду благодарен!"
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
08.08.2014, 15:00
ну и указали бы где неправильно . зачем темы то плодить ?
0
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
08.08.2014, 15:06  [ТС]
MrCold, так обычно в старых темах уже не отвечают....
в следующий раз буду знать,
сейчас покажу :
здесь происходит открытия файлов, первые два на чтение, третий на запись, ну и следующий код, получается тоже чуть не подходит
C++
1
2
3
4
5
6
7
8
9
10
11
    fpsource=fopen(sourcefile, "rb");
    if(fpsource == NULL)    { printf("\n  Can't find %s!\n", sourcefile);   exit(1); }
 
    fpfilepars=fopen(parsfile, "rb");
    if(fpfilepars == NULL)  { printf("\n  Can't find %s!\n", parsfile); exit(1); }
 
    fptarget=fopen(targetfile, "wt");
    if(fptarget == NULL)    { printf("\n  Can't open %s!\n", targetfile); exit(1); }
 
    if(sizeof(PARS_OF_WRITE_FILE) != fread(&DataPars, 1, sizeof(PARS_OF_WRITE_FILE), fpfilepars))
        { puts("\n  ------- ERROR2!!!\n\n"); exit(1); }
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
08.08.2014, 15:12
вам все уже перевел.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  if (!File.Exists(sourcefile))
         {
             Console.WriteLine("\n  Can't find {0}!\n", sourcefile);
             return;
         }
 
         // fpfilepars=fopen(parsfile, "rb");
         if (!File.Exists(parsfile))
         {
             Console.WriteLine("\n  Can't find {0}!\n", parsfile);
             return;
         }
 
         //   fptarget=fopen(targetfile, "wt");
         if (!File.Exists(targetfile))
         {
             Console.WriteLine("\n  Can't find {0}!\n", targetfile);
             return;
         }
C#
1
2
3
4
5
6
7
8
9
10
11
 // *fpfilepars;
  using (FileStream fpfilepars = new FileStream(parsfile, FileMode.Open))
     
 
  //*fptarget, 
  using (StreamWriter fptarget = new StreamWriter(targetfile))
 
//    fpsource
  using (FileStream fpsource = new FileStream(parsfile, FileMode.Open))
    {
     using (BinaryReader binRead = new BinaryReader(fpsource))
Добавлено через 1 минуту
программа рабочая ?
где ошибка ?

Добавлено через 2 минуты
вам учебник по с# нужен
а не перевод чужой.
0
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
08.08.2014, 15:13  [ТС]
MrCold, ну вроде как рабочая
C#
1
2
3
4
5
6
         //   fptarget=fopen(targetfile, "wt");
         if (!File.Exists(targetfile))
         {
             Console.WriteLine("\n  Can't find {0}!\n", targetfile);
             return;
         }
на этом выдаёт ошибку, а должен создавать .txt файл и записывать в него
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
08.08.2014, 15:15
Цитата Сообщение от ked Посмотреть сообщение
а должен создавать .txt файл и записывать в него
Ну кто вам сказал такое .
Это проверка на существование файла.
0
2 / 2 / 0
Регистрация: 10.07.2014
Сообщений: 102
08.08.2014, 15:17  [ТС]
MrCold, ну и почитал я эти учебники, в итоге ничего не понятно и не ясно, нигде толкового практически нету, чтоб написать данную программу, я новичок, да знаю плохо С#, но на примерах я уже больше узнал чем из учебника

Добавлено через 1 минуту
MrCold, так я знаю, что происходит проверка, но смысл проверять , когда файл не создан программой
0
871 / 721 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
08.08.2014, 15:17
ked,
Конечно ошибка, в оригинале проверяет успешность открытия файла, а в C# коде существует такой файл или нет.
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
08.08.2014, 15:18
XRoy, вы перевод видели?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.08.2014, 15:18
Помогаю со студенческими работами здесь

Перевод кода с VB на C#
Здравствуйте, не могу понять код написанный на VB можете перевести на C# Public Overrides Function SelectTemplate(ByVal item As Object,...

Перевод кода с TP
program 2; uses graph,crt; const xs0=50; xp1=1.75; xs1=610; xp0=-1.75; ys0=440;yp1=1; ys1=40; yp0=-1; {granici...

Перевод кода из C# в C++
Имеется исходный код на C#: using System; using System.Collections.Generic; using System.Linq; using System.Text; public...

Перевод кода
Помогите, пожалуйста, перевести этот код на c++. Я совсем не знаю Паскаль program dddd; var m:array of integer; ...

Перевод кода с C++
Помогите перевести код на паскаль. #include &lt;iostream&gt; #include &lt;cmath&gt; int main(){ double x; std::cin&gt;&gt;x; if(x&gt;0)...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru