|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.03.2008, 23:24 | #1 |
Регистрация: 11.03.2008
Сообщений: 3
|
Консольное приложение
У меня такая проблема: Есть работающая прога на Паскале, кот. сделана ещё в Dos очень давно. Необходимо осовременить её. Окна со всякими кнопками и менюшками в Delphi уже сделала, программу почти отладила в консольном режиме Delphi. Возможно ли её теперь как-то вызывать из оконного режима? Как к ней можно обратиться? Была бы безмерно благодарна за совет!!!
|
11.03.2008, 23:39 | #2 |
Участник клуба
Регистрация: 26.10.2007
Сообщений: 1,244
|
Называется "гланды через ж..."... Наверняка можно всё переделать для Делфи... И проще и лучше.
И что значит вызывать? Нажал кнопку и консольная прога запустилась? А код посмотреть можно?
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым, Попытка глубже понимать уже попахивает литром... |
11.03.2008, 23:52 | #3 |
Регистрация: 11.03.2008
Сообщений: 3
|
Ммм.. ну там метки всякие (типа Label 1 и т.п.), а Delphi на них ругается А код просто боюсь даже не влезет по числу допустимых символов сюда. Там огромная прога. Много разных процедур и функций.. А обращаться - т.е. вызывать ту или иную процедуру.....
Вот кусочек проги: program ORB_my; {$APPTYPE CONSOLE} uses Windows, SysUtils, Forms; type arrofstring= array [1..5] of string; arrofreal= array[1..5] of real; darrofreal= array[1..5,1..11] of real; arrofreal2= array[1..11] of real; var f11S: array of string; x01: real; y01: array of real; res: array of real; Procedure RootEq(xs1:char; sS1:string; var n1: byte; eps1:real; var x01,y01:real;var err: integer); Procedure Diffs(var nn: byte; xS1: char; yS1: string); Procedure IntDiffs(var nn: byte; eps1: real; xS1: char; yS1: string; f11S: arrofstring; x01,x02: real; var y01: arrofreal; var err: integer); Procedure IntDiff1(var nn: byte; eps1: real; xS1:char; yS1,sS1: string; x01,x02: real; var y01: arrofreal; var err: integer); Procedure IntSing(var nn: byte; eps1: real; xS1:char; yS1,sS1: string; x01,x02: real; var y01: arrofreal; var err: integer); Procedure Diff(var nn: byte; sS1: string; xx0,yy0: real; var y02: arrofreal; var err: integer); Procedure DiffH(var nn,mm: byte; sS1: string; xx0: real; var yy0m: arrofreal; var y02: arrofreal; var err: integer); var a,b,c,d,e,f,g,h,o,p,q,r,s,t,u,v,w,x ,y,z: real {Внешние}; k7: integer; yy01: array of real; label 1,2,3,4,5,6,7,8,9; var ff: text; as_,as1:string; ax,a0,al0,al,stepx,xn,step,xx,kk,kk k,kp:real; i1,i2,i3,i4,j2,j3,j4,k1,k2,k3,k4,k5 , m1,m7,m8,m9,n5,n6: byte {n5,k7 - внешние}; c1,c2,c3,c4,c5,sS,q3,q4,YS: string {YS - внешняя}; st1: string[100]; q1,q2,ch,ch1,xS,x1S,y1S: char {xS,x1S - внешние}; i9,j1,j9,m5,n4,code: integer; i,j,k,l,m,n: integer {Внешние, n - внутренняя}; a1,a3,a4,ak1,r1,r2,r3,r4,r5,x2: real {a1 - внешняя}; x0,y1,eps: real {переменные верхнего уровня}; z1: array [1..13] of real; b1,b2: array [1..12] of real; n1,n2,n3,m2,m3,l1,e1,d1: array [1..6] of byte; a2: array [1..6,1..11] of real; a6: array [1..5,1..12] of real {Внешний}; a5,a7: array [1..10] of real { для алгоритма А2 }; t1: array [1..12,1..11] of real; f1S: array [1..5] of string {Внешний}; {***************************} function Power(a,b:real): real; {a^b} label 1; var i,j:integer; begin j:=trunc(b); if b=j then begin r:=1; for i:=1 to j do r:=r*a; goto 1 end; if a>0 then begin r:=exp(ln(a)*b); goto 1 end; r:=0; if a<0 then k7:=1 {write('недопустимая операция a^b, a<0, b - нецелое')}; if b>0 then r:=0 else k7:=2 {write('недопустимая операция a^b, a=0, b<0')}; 1: power:=r end; {***************************} function Mid(str1: string; m,n: byte): string; var i4: byte; begin st1:=''; for i4 := m to n+m-1 do st1:=st1+str1[i4]; Mid:=st1; end; {****************************} function Instr(str: string; s: char): byte; label 1; var i4: byte; begin n4:=Length(str); for i4:=1 to n4 do if(str[i4]=s) then goto 1; i4:=0; 1: Instr:=i4 end; {****************************} function SmartBoy: byte; label 1,2,3,4,5,6,7; begin j2:=i1; goto 2; 1: j2:=j2+1; 2: ch:=sS[j2]; j1:=instr(c4,ch); if j1>0 then goto 5; if ch<>'(' then goto 4; j4:=j2+1; 3: j2:=j2+instr(mid(sS,j2+1,k1-j2),')'); j1:=j1+j4; j4:= instr(mid(sS,j1,j2-j1),'('); if j4>0 then goto 3; 4: if j2<k1 then goto 1; goto 7; 5: ch:=sS[j2-1]; if (ch<>'E') and (ch<>'e') then goto 6; ch:=sS[j2-2]; j3:=Ord(ch); if (j3>47) and (j3<58) then goto 1; 6: j2:=j2-1; 7: SmartBoy:=j2; end; |
11.03.2008, 23:55 | #4 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
что мешает вверху вместо program написать unit, удалить {$APPTYPE CONSOLE}
и подключить этот модуль к проге своей и вызывать уже нужные процедуры? |
12.03.2008, 00:00 | #5 |
Регистрация: 11.03.2008
Сообщений: 3
|
Да, женщина, наверно, и правда не может быть программистом Но всё же. Как Вы написали делала, да Делфи ругается на Label. Пишет "Label declaration not allowed in interface part"....
|
12.03.2008, 07:42 | #6 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
ну и определи свои label в разделе implementation. или, что еще лучше, перепеши без goto.
|
12.03.2008, 08:33 | #7 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 266
|
С goto в дельфи всегда проблемы
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Консольное приложение | eks-s | Общие вопросы Delphi | 17 | 25.01.2008 03:12 |
Консольное приложение и DLL | SunKnight | Общие вопросы Delphi | 1 | 16.12.2007 02:35 |
Консольное приложение | MAcK | Общие вопросы Delphi | 2 | 03.12.2006 18:28 |