Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.79/42: Рейтинг темы: голосов - 42, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 21.04.2009
Сообщений: 25

Перевод кода из Delphi в C++ Builder

13.05.2009, 16:34. Показов 8078. Ответов 35
Метки нет (Все метки)

Кто нибудь сможет помочь перевести проект с делфи на билдер? Выкладываю исходники на делфи.
Вложения
Тип файла: rar find.rar (9.1 Кб, 75 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.05.2009, 16:34
Ответы с готовыми решениями:

Перевод кода из Delphi в C++ Builder / C++ Builder
Кто нибудь сможет помочь перевести проект с делфи на билдер? Выкладываю исходники на делфи. procedure TForm1.SpeedButton1Click(Sender:...

Перевод кода из Delphi 7 в C++ Builder 6
Подскажите, пожалуйста, как можно перевести код: TMemo(FindComponent('Memo' + IntToStr(i))).Lines.LoadFromFile(GetCurrentDir + '\db\' +...

Перевод кода Delphi на C++Builder
ADOQuery1.Append; For I := 0 To ADOQuery1.Fields.Count-1 Do if ADOQuery1.Fields.FieldName <> 'Код' Then ADOQuery1.Fields.Value...

35
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
13.05.2009, 23:47
Victor35,
задача какова?
0
0 / 0 / 0
Регистрация: 21.04.2009
Сообщений: 25
14.05.2009, 13:12  [ТС]
Задача в том чтобы найти кратчайший путь в лабиринте. Лабиринт задается файлом. Вот нужно считать информацию из файла.
0
Программист TH
 Аватар для DanUnited
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
14.05.2009, 13:55
а в си как объявить переменную типа файл?
FILE *f;
или путь к файлу через AnsiString.
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
14.05.2009, 15:29
Victor35,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{TStringList *Lbrnt = new TStringList;
 
    //-----------------------------------------
    Lbrnt->LoadFromFile("Labirint.txt");//Lbrnt
    //-----------------------------------------
 
    Memo1->Lines->Add(Lbrnt->Strings[2]);//String
 
                             //-----------------
    unsigned char intLbrnt = Lbrnt->Strings[4][2] - 257;//(char)-257(!)
                             //-----------------
 
    Memo1->Lines->Add(intLbrnt);//  (int)
 
delete Lbrnt;
}
//---------------------------------------------------------------------------
1
0 / 0 / 0
Регистрация: 21.04.2009
Сообщений: 25
14.05.2009, 15:56  [ТС]
А что такое reset и eof? И на что их можно заменить в си?
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
14.05.2009, 16:01
нашел по поводу переноса строки вместо константы вот так:
C++
1
ShowMessage("Найден минимальный путь.\nОн равен "+IntToStr(MinPath));
по поводу
Код C++
1 Lab->Cells[X, Y]=#159;


мне поступать вот так?
Код C++
1
2 const char NS=159;
Lab->Cells[X, Y]=NS;
просто
Lab->Cells[X, Y]=159;

А что такое reset и eof? И на что их можно заменить в си?
reset - открыть файл
eof - маркер конца файла

зачем тебе это, mirso показал как прочесть с файла
0
0 / 0 / 0
Регистрация: 21.04.2009
Сообщений: 25
14.05.2009, 16:41  [ТС]
Цитата Сообщение от mirso Посмотреть сообщение
Victor35,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{TStringList *Lbrnt = new TStringList;
 
    //-----------------------------------------
    Lbrnt->LoadFromFile("Labirint.txt");//Lbrnt
    //-----------------------------------------
 
    Memo1->Lines->Add(Lbrnt->Strings[2]);//String
 
                             //-----------------
    unsigned char intLbrnt = Lbrnt->Strings[4][2] - 257;//(char)-257(!)
                             //-----------------
 
    Memo1->Lines->Add(intLbrnt);//  (int)
 
delete Lbrnt;
}
//---------------------------------------------------------------------------
С мемо понятно, а как быть с моим стринггридом? Также?

Добавлено через 39 минут 44 секунды
Как мне переделать эту процедуру в си?

Delphi
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
procedure TfmLabirint.LoadLabirint;
Var
  F:TextFile;
  LabRow:String;
  Ch:Char;
  x, y:Integer;
begin
  Run.Enabled:=False;
  StartX:=-1; StartY:=-1;
  StopX:=-1; StopY:=-1;
  AssignFile(F, OpenDialog1.FileName);
  Reset(F);
  y:=0;
  While Not(EOF(F)) Do
  Begin
    ReadLn(F, LabRow);
    Lab.RowCount:=y+1;
    Lab.ColCount:=Length(LabRow);
    For x:=0 To Length(LabRow)-1 Do
    Begin
      Ch:=LabRow[x+1];
      If Ch='J' Then
      Begin
        StartX:=x;
        StartY:=y;
      End;
      If Ch='O' Then
      Begin
        StopX:=x;
        StopY:=y;
      End;
      If ((Ch<>'J') And (Ch<>'O') And (Ch<>' ')) Then Ch:='x';
      Lab.Cells[x, y]:=Ch;
    End;
    Inc(y);
  End;
  CloseFile(F);
 
  LabX:=Length(LabRow);
  LabY:=y;
  Label1.Caption:='Размер лабиринта:  '+IntToStr(LabX)+' x '+IntToStr(LabY);
 
  If StartX<0 Then
  Begin
    Label2.Caption:='Начало поиска (J):  не указано!';
    Exit;
  End;
  Label2.Caption:='Начало поиска (J):  '+IntToStr(StartX+1)+' x '+IntToStr(StartY+1);
 
  If StopX<0 Then
  Begin
    Label3.Caption:='Выход из лабиринта (O):  не указан!';
    Exit;
  End;
  Label3.Caption:='Выход из лабиринта (O):  '+IntToStr(StopX+1)+' x '+IntToStr(StopY+1);
 
  Run.Enabled:=True;
end;
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
14.05.2009, 16:46
C#
1
2
3
4
5
6
7
8
9
10
11
12
FILE *f;
f = fopen("labir1.txt","r");
if( f==NULL )ShowMessage("Невозможно открыть файл/nlabir0.txt");
 
char s[2];
while (!feof(f))
{fgets(s, 2, f);
.............
}
ShowMessage(g);
 
fclose(f);
вот это читает все с текстового файла по одному символу!
переделай под себя
0
0 / 0 / 0
Регистрация: 21.04.2009
Сообщений: 25
14.05.2009, 17:24  [ТС]
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
FILE *f;
f = fopen("labir1.txt","r");
if( f==NULL )ShowMessage("Невозможно открыть файл/nlabir0.txt");
 
char s[2];
while (!feof(f))
{fgets(s, 2, f);
.............
}
ShowMessage(g);
 
fclose(f);
вот это читает все с текстового файла по одному символу!
переделай под себя
Билдер ругается на объявление FILE.
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
14.05.2009, 17:40
а вот забыл:
#include stdio.h
1
0 / 0 / 0
Регистрация: 21.04.2009
Сообщений: 25
14.05.2009, 19:16  [ТС]
А почему он у меня ругается на строчку
C++
1
Lab->ColCount=Length(LabRow);
Говорит что Length нет такой функции. Я вроде ей пользовался в обычном си.
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
14.05.2009, 19:20
Цитата Сообщение от Victor35 Посмотреть сообщение
А почему он у меня ругается на строчку
C++
1
Lab->ColCount=Length(LabRow);
Говорит что Length нет такой функции. Я вроде ей пользовался в обычном си.
нет такой функции, есть StrLen для нультермальных строк или LabRow.Length(); для String
1
Программист TH
 Аватар для DanUnited
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
14.05.2009, 21:00
Lab->ColCount=Length(LabRow)
Lab->ColCount=LabRow.Length();
Набираешь непонятный участок кода, нажимаешь F1 и читаешь, что там написано....
1
0 / 0 / 0
Регистрация: 21.04.2009
Сообщений: 25
15.05.2009, 09:00  [ТС]
Вроде всё переделал. Но проблема с функцией загрузки лабиринта. Посмотрите, может подскажете что не правильно.

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
void __fastcall Tfmlabirint::LoadLabirint(void)
{
  FILE *f;
  AnsiString F=OpenDialog1->FileName;
  AnsiString LabRow;
  char Ch;
  int x, y;
  Run->Enabled=False;
  StartX=-1; StartY=-1;
  StopX=-1; StopY=-1;
  f = fopen("labir0.txt","r");
  y=0;
  if( f==NULL )ShowMessage("Невозможно открыть файл/nlabir0.txt");
  char s[2];
  while (!feof(f))
  {
    fgets(s, 2, f);
    Lab->RowCount=y+1;
    Lab->ColCount=LabRow.Length();
    for (x=0; x<LabRow.Length()-1; x++)
    {
      Ch=LabRow[x+1];
      if (Ch=='J')
      {
        StartX=x;
        StartY=y;
      }
      if (Ch=='O')
      {
        StopX=x;
        StopY=y;
      }
      if ((Ch!='J') && (Ch!='O') && (Ch!=' '))  Ch='x';
      Lab->Cells[x][y]=Ch;
    }
    y++;
  }
  fclose(f);
 
  LabX=LabRow.Length();
  LabY=y;
  Label1->Caption="Размер лабиринта:  "+IntToStr(LabX)+" x "+IntToStr(LabY);
 
  if (StartX<0)
  {
    Label2->Caption="Начало поиска (J):  не указано!";
    return;
  }
  Label2->Caption="Начало поиска (J):  "+IntToStr(StartX+1)+" x "+IntToStr(StartY+1);
 
  if (StopX<0)
  {
    Label3->Caption="Выход из лабиринта (O):  не указан!";
    return;
  }
  Label3->Caption="Выход из лабиринта (O):  "+IntToStr(StopX+1)+" x "+IntToStr(StopY+1);
 
  Run->Enabled=True;
}
Добавлено через 10 часов 20 минут 27 секунд
Всем спасибо, что помогали! Особенное спасибо MrAndrey_ka!!!
0
Любитель давать советы
 Аватар для Alexiski
342 / 135 / 14
Регистрация: 12.01.2009
Сообщений: 511
15.05.2009, 09:15
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
Alexiski, а я что нитак сказал?
Все так. Я писал, когда Вашего поста еще не было.
0
0 / 0 / 0
Регистрация: 09.10.2009
Сообщений: 71
11.10.2009, 13:07
а такой код помогите плиз



Delphi
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
procedure TForm1.Button3Click(Sender: TObject);
const
   a1=0.0000188;       
   LAM1=0.0244;  {vozdyx}  
   DELTAU=0.01;            
   LX=0.1;  dX=0.01;       
   LY=0.1;  dY=0.01;         
   LZ=0.1;  dZ=0.01;   
var
  T:array[1..11,1..11,1..11]of real;
  dT:array[1..11,1..11,1..11]of real;
   X,Y,Z:integer;                   
   time:real;
   tt: longint;  {время воздействия}
   u: longint;  {входное воздействие в виде заданной температуры}
   tau: longint;  {число шагов по времени}
   PX,PY,PZ:REAL;
   F34,dF34,PF,alyfa,dR4,dRl:REAL;
 begin
   {считывание данных}
{   time:=strtoint(Edit2.Text);    }   
   u:=strtoint(Edit1.Text);         
 {  tau:=trunc (time/deltau);    }    
   PX:=dX*dX;    
   PY:=dY*dY;     
   PZ:=dZ*dZ;      
   {обнуление графика и окон}      
   Chart1.SeriesList[0].Clear;                        
   Memo1.Lines.Clear;                                    
   Edit3.Text:='';                                        
   ProgressBar1.Max:=70000;                                 
   ProgressBar1.Position:=0;                                
 {обнуление массивов}
  FOR X:=1 TO 11 DO
   FOR Y:=1 TO 11 DO
    FOR Z:=1 TO 11 DO
    BEGIN
    T[X,Y,Z]:=0;
    dT[X,Y,Z]:=0;
    END;
   {вычисление значений массива по формуле теплопроводности}
 {  FOR tt:=1 TO tau DO}
  FOR tt:=1 TO 70000 DO
    BEGIN
     FOR X:=2 TO 10 DO
      FOR Y:=2 TO 10 DO
       FOR Z:=2 TO 10 DO
       BEGIN
       dT[X,Y,Z]:=(T[X-1,Y,Z]-2*T[X,Y,Z]+T[X+1,Y,Z])/PX;
       dT[X,Y,Z]:=dT[X,Y,Z]+(T[X,Y-1,Z]-2*T[X,Y,Z]+T[X,Y+1,Z])/PY;
       dT[X,Y,Z]:=dT[X,Y,Z]+(T[X,Y,Z-1]-2*T[X,Y,Z]+T[X,Y,Z+1])/PZ;
       dT[X,Y,Z]:=a1*DELTAU*dT[X,Y,Z];
       END;
     FOR Y:=2 TO 10 DO
      FOR Z:=2 TO 10 DO
      BEGIN
       T[1,Y,Z]:=T[2,Y,Z];
      END;
      FOR Y:=2 TO 10 DO
       FOR Z:=2 TO 10 DO
      BEGIN
       T[11,Y,Z]:=T[10,Y,Z];
      END;
    FOR X:=2 TO 10 DO
     FOR Y:=2 TO 10 DO
      BEGIN
       T[X,Y,1]:=T[X,Y,2];
      END;
     FOR X:=2 TO 10 DO
      FOR Y:=2 TO 10 DO
      BEGIN
       T[X,Y,11]:=T[X,Y,10];
      END;
     FOR X:=1 TO 11 DO
      FOR Z:=1 TO 11 DO
      BEGIN
      T[X,1,Z]:=0;
      END;
    FOR X:=1 TO 11 DO
      FOR Z:=1 TO 11 DO
      BEGIN
       T[X,1,Z]:=10;
      END;
      BEGIN
        T[6,5,5]:=u;
      END;
     FOR X:=2 TO 10 DO
      FOR Y:=2 TO 10 DO
       FOR Z:=2 TO 10 DO
       BEGIN
       T[X,Y,Z]:=T[X,Y,Z]+dT[X,Y,Z];
       END;
 
 {вывод значений температуры в заданном датчике в виде графика}
      time:=tt*deltau;
      Chart1.SeriesList[0].AddXY(time,T[StrtoInt(ComboBox1.Text),StrtoInt(ComboBox2.Text),StrtoInt(ComboBox3.Text)]);
 
 {вывод значений температуры в заданном датчике в виде столбца}
      Memo1.Lines.Add(FloattoStr (T[StrtoInt(ComboBox1.Text),StrtoInt(ComboBox2.Text),StrtoInt(ComboBox3.Text)]));
       ProgressBar1.StepBy(1);
    end;
  {вывод температуры заданного датчика}
  Edit3.Text:=FloattoStr(T[StrtoInt(ComboBox1.Text),StrtoInt(ComboBox2.Text),StrtoInt(ComboBox3.Text)]);
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
 
end;
 
{ end;}
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.10.2009, 13:07

Перевод кода из Delphi в C++ Builder
Кто нибудь сможет помочь перевести проект с делфи на билдер? unit Unit1; interface uses Windows, Messages, SysUtils,...

Перевод кода с Delphi на C++ Builder
Помогите перевести данный код (экспорт данных из ADOTable в Excel) с Delphi на C++ Builder. var XLApp,Sheet,Colum:Variant; ...

Перевод кода Delphi на C++Builder
procedure TForm1.Button1Click(Sender: TObject); var jpeg: TJPEGImage; bmp: TBitmap; begin if OpenPictureDialog1.Execute then ...

Перевод кода с Delphi на C++ Builder (работа с файлами)
Вывести на Memo1 информацию с exam1.txt и записать эту информацию в names.txt. Помогите перевести procedure...

Автокнопка. Перевод кода исходника на delphi в С++ Builder
Народ, а никто не пытался написать прогу, чтобы конвертировала код на delphi в С++ Builder?


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Свет в конце тоннеля
kumehtar 16.06.2026
Поймал себя на одной мысли. Раньше мне всегда казалось неправильным жить без чёткого понимания, куда всё идёт. Будто я иду по дороге судьбы, но не знаю, куда она ведёт. А раз не знаю — значит,. . .
[golang] Реализация стека с поддержкой получения минимального элемента за O(1)
alhaos 16.06.2026
155. Min Stack Задача: Реализовать стек который поддерживает push, pop, top и получение минимального элемента за O(1). Методы: NewMinStack() *MinStack — инициализация Push(val int) —. . .
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru