у тя при декомпиле получилось так что переменная(например) оказалась раньше основного старта. - ето по ошибке а еще интересно прога на каком языке написана если ты ее декомпилил а открыл в дельфи? декомпилятся в исходники c# java из дельфийской сюборки ты максимум ресы выдернешь...
как я понимаю ей этого нехватает? procedure Unit1.Initialization(Sender : TObject); procedure Unit1.Finalization(Sender : TObject);
GSM™, для модулей необходимы секции interface, implementation, initialization, finalization (последние два необязательны), типа Code: unit Unit1; [b]interface[/b] uses ... type { TForm1 } TForm1 = class(TForm) procedure Button1Click(Sender : TObject); procedure PageControl1Change(Sender : TObject); procedure Edit1Change(Sender : TObject); procedure Edit2Change(Sender : TObject); procedure FormActivate(Sender : TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; [b]implementation[/b] { TForm1 } procedure Button1Click(Sender : TObject); begin ... end; end. Быть может, у тебя потерялсо interface или implementation?
как в делфе сделать чтобы форму поделить на поле с прямоугольниками 15*15 и чтобы каждому мона было задавать цвет %) зачем надо неспрашивайте :d
PHP: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, XPMan; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; Label1: TLabel; XPMan1: TXPMan; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function CountWords(InputString: string): integer; var aChar: char; WordCount: integer; IsWord: boolean; i: integer; begin WordCount := 0; IsWord := False; for i := 0 to Length(InputString) do begin aChar := InputString[i]; if (aChar in [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '''', '-' ]) then begin if not IsWord then Inc(WordCount); IsWord := True; end else if aChar = '\' then IsWord := True else IsWord := False end; IsWord := False; Result := WordCount; end; procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := IntToStr(CountWords(edit1.Text)); end; end. EXE - http://dump.ru/files/o/o532484947/
LEE_ROY, исправь здесь: Code: else if aChar = then IsWord := True else IsWord := False Получается код неправильно считает количество слов... Вот, привожу пример на консоли, помнится именно такие задание просят сделать на консоли. Ну если че перевести куда нужно легко Code: program CountWord; {$APPTYPE CONSOLE} uses SysUtils; var i,n,count:integer; t:string; p:boolean=false; function Rus(mes:string):string; var i:integer; begin for i:=1 to length(mes) do case mes[i] of 'А'..'п': mes[i]:=Chr(Ord(mes[i])-64); 'р'..'я': mes[i]:=Chr(Ord(mes[i])-16); end; rus:=mes; end; begin writeln(rus('Введите текст '));readln(t); n:=length(t); if (n>0) then begin count:=1; for i:=1 to n-1 do begin if ((t[i]=' ') or (t[i]='.') or (t[i]=',')) and (not p) then begin inc(count); p:=true; end else if (t[i]<>' ') and (t[i]<>'.') and (t[i]<>',') then p:=false; end; end else count:=0; if (t[n]=' ') or (t[n]=',') then count:=1; write(count); readln; end. Теперь подправил! P.S. Конечно не красиво, но для учебы сойдет
A2GIL А видишь она просто считает количество пробелов или точек, или запятых - поэтому неправильно выдает! А фича с p:boolean не помогает. логически не правильно построено.
Довольно легко, вот сделал так, чтобы сразу задавался рендомный цвет Code: var Form1: TForm1; h,w,dh,dw:integer; i,j:byte; r,g,b:byte; flox,floy:integer; implementation {$R *.dfm} procedure TForm1.FormPaint(Sender: TObject); begin with form1 do begin h:=ClientHeight; w:=ClientWidth; dh:=round(h/15); dw:=round(w/15); flox:=dw-3; floy:=dh-3; for i:=1 to 15 do for j:=1 to 15 do begin Canvas.Rectangle((j-1)*dw,(i-1)*dh,j*dw,i*dh); randomize(); r:=random(255); g:=random(255); b:=random(255); Canvas.Brush.Color:=rgb(r,g,b); Canvas.FloodFill((j)*flox,(i)*floy,canvas.Pixels[(j)*flox,(i)*floy],fsSurface); end; end; end; //Работа с Canvas' ом идет не с первой космической скоростью
ээ снова я )) m: array[1..4] of char = ('T','E','S','T'); а как также только матрицу записать? дапустим n : array [1..4,1..4] of char построчно
насколько помню это можно сделать так Code: m: array[1..4, 1..4] of char = (('T','E','S','T'), ('q','w','e','e'), ('a','s','d','f'), ('z','x','c','v'));
Так в паскале Code: Uses Crt, Graph; Var i,Driver,Mode,Regim: Integer; Begin Driver:=VGA; Regim:=VGAmed; InitGraph(Driver, Regim,'C:\Program Files\tp7\BGI'); Setbkcolor (red); ClearDevice; а как теперь это в дельфу в 7ую подогнать?
если тебе нужна работа с графикой то юзай directx ir OpenGL кусок кода твоего работает в консоли в дельфи он бесполезен если хочешь на форме рисовать юзай TCanvas
Кто бы мог подумать, но вот понадобился Паскаль снова =( Стандартная задача про счастливый билет: Задается билет (шесть цифарок), нужно вывести на экран следующий после этого счастливый билет. Например: юзер ввел '123320' вывелось '123321'. До конца отладить прогу так и не получается=( P.S. На кривоту кода не обращайте внимания, Паскаль не юзал хз скоко времени =( Огромное спасибо тому кто сделает, ну и конечно +++ =) Code: program lucky; uses Crt; Var a,b,c,d,e,f : byte; aw,bw,cw,dw,ew,fw,nw : string; er1,er2,er3,er4,er5,er6 : integer; begin ClrScr; writeln('Enter your lucky-number'); readln(nw); if Length(nw)<>6 then writeln('Enter valid number') else begin aw:=Copy(nw,1,1); bw:=Copy(nw,2,1); cw:=Copy(nw,3,1); dw:=Copy(nw,4,1); ew:=Copy(nw,5,1); fw:=Copy(nw,6,1); Val(aw,a,er1); Val(bw,b,er2); Val(cw,c,er3); Val(dw,d,er4); Val(ew,e,er5); Val(fw,f,er6); if a+b+c+d+e+f = 54 then begin writeln('Congratulation! It is lucky-number!'); writeln('Next lucky-number is 000000') end else if a+b+c=d+e+f then writeln('Congratulation! It is lucky-number!'); for a:=a to 9 do for b:=b to 9 do for c:=c to 9 do for d:=d to 9 do for e:=e to 9 do for f:=f+1 to 9 do // !!!!!!!!!!!!!!!!!!!!!! if a+b+c=d+e+f then begin writeln('Next lucky-number is ',a,b,c,d,e,f); break; end end end. //123320 прекрасно //111111 ничего кроме это лаки //000001 ничего
У вас ошибко в алгоритме Сэр)): Code: //Выше просто обрезано ;) if a+b+c+d+e+f = 54 then begin writeln('Congratulation! It is lucky-number!'); writeln('Next lucky-number is 000000') end else begin if a+b+c=d+e+f then begin writeln('Congratulation! It is lucky-number!'); f:=f+1; //Увеличиваем последнюю цифру здесь а не в цикле end; for a:=a to 9 do begin for b:=b to 9 do begin for c:=c to 9 do begin for d:=d to 9 do begin for e:=e to 9 do begin for f:=f to 9 do begin // !!!!!!!!!!!!!!!!!!!!!! if a+b+c=d+e+f then begin writeln('Next lucky-number is ',a,b,c,d,e,f); exit; end; end; {сбрасываем счётчики на 0 после 9) f:=0; end; e:=0; end; d:=0; end; c:=0; end; b:=0; end; end; end; end.
О. ребят! интересненькая задачка! Pir4tt, замечание верное. но тогда получается, что выводятся все следующие счастливые числа. Надо ведь только одно следующее! Тут есть маленькая загвоздка. Лучше воспользоваться дополнительными процедурами. Короче убил, аж целый час. Было интересно! Проверяй Code: Var a,b,c,d,e,f : byte; aw,bw,cw,dw,ew,fw,nw : string; er1,er2,er3,er4,er5,er6 : integer; left,right:integer; procedure patch(v1,v2,v3:byte;var ot:integer); var buf:string; code:integer; begin if (v1=0) and (v2=0) then buf:=inttostr(v3) else if v1=0 then buf:=inttostr(v2)+inttostr(v3) else buf:=inttostr(v1)+inttostr(v2)+inttostr(v3); Val(buf,ot,code); end; procedure dispatch(digit:integer; var s1,s2,s3:byte); var buf:string; code:integer; begin buf:=inttostr(digit); if digit<10 then begin s1:=0;s2:=0;s3:=digit; end else if digit<100 then begin s1:=0; Val(copy(buf,2,1),s2,code); Val(copy(buf,3,1),s3,code); end else begin Val(copy(buf,1,1),s1,code); Val(copy(buf,2,1),s2,code); Val(copy(buf,3,1),s3,code); end; end; begin ClrScr; writeln('Enter your lucky-number'); readln(nw); if Length(nw)<>6 then writeln('Enter valid number') else begin aw:=Copy(nw,1,1); bw:=Copy(nw,2,1); cw:=Copy(nw,3,1); dw:=Copy(nw,4,1); ew:=Copy(nw,5,1); fw:=Copy(nw,6,1); Val(aw,a,er1); Val(bw,b,er2); Val(cw,c,er3); Val(dw,d,er4); Val(ew,e,er5); Val(fw,f,er6); if a+b+c+d+e+f = 54 then begin writeln('Congratulation! It is lucky-number!'); writeln('Next lucky-number is 000000'); end else if a+b+c=d+e+f then writeln('Congratulation! It is lucky-number!') else begin patch(d,e,f,right); patch(a,b,c,left); if left=0 then begin left:=1; dispatch(left,a,b,c); right:=0; end; while a+b+c<>d+e+f do begin inc(right); dispatch(right,d,e,f); if (d=10) and (e=10) and (f=10) then begin patch(a,b,c,left); inc(left); dispatch(left,a,b,c); end; end; writeln('Next lucky-number is ',a,b,c,d,e,f); end; readln; end; end.
Нет)) специально проверял, выводится одно следуещее число, обеспечивается заменой брейка на экст Code: if a+b+c=d+e+f then begin writeln('Next lucky-number is ',a,b,c,d,e,f); [b]exit;[/b] end; A2GIL, вариант интересный, но усложнённый имхо)) //пошёл рассматривать