Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Нужно сделать трассировку   Найти похожие ветки 

 
Рома   (2012-01-16 23:28) [0]

Люди помогите сделать трассировку этой программы

unit Main;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ComCtrls, Grids, XPMan, Math;

type
 TMainForm = class(TForm)
   XSizeEdit: TEdit;
   StatusBar: TStatusBar;
   SizeLabel: TLabel;
   TextLabel: TLabel;
   TextEdit: TEdit;
   Cliche: TStringGrid;
   Table: TStringGrid;
   XUpDown: TUpDown;
   XPManifest: TXPManifest;
   CryptButton: TButton;
   DecryptButton: TButton;
   ClicheLabel: TLabel;
   LatticeLabel: TLabel;
   CloseButton: TButton;
   DecryptText: TEdit;
   ResetButton: TButton;
   XLabel: TLabel;
   YSizeEdit: TEdit;
   YUpDown: TUpDown;
   MaxLabel: TLabel;
   Speed: TTrackBar;
   DecryptLabel: TLabel;
   SpeedLabel: TLabel;
   procedure XUpDownClick(Sender: TObject; Button: TUDBtnType);
   procedure CloseButtonClick(Sender: TObject);
   procedure CryptButtonClick(Sender: TObject);
   procedure ResetButtonClick(Sender: TObject);
   procedure ClicheDrawCell(Sender: TObject; ACol, ARow: Integer;
     Rect: TRect; State: TGridDrawState);
   procedure FormCreate(Sender: TObject);
   procedure TableDrawCell(Sender: TObject; ACol, ARow: Integer;
     Rect: TRect; State: TGridDrawState);
   procedure DecryptButtonClick(Sender: TObject);
 end;

var
 MainForm: TMainForm;
 ClicheMatrix:array of array of Boolean;
 TableMatrix:array of array of Char;
 xSize,ySize,AnimatePos,ClichePosX:Byte;

implementation

{$R *.dfm}

procedure TMainForm.CloseButtonClick(Sender: TObject);
begin
 Close;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
 ResetButtonClick(nil);
end;

procedure TMainForm.XUpDownClick(Sender: TObject; Button: TUDBtnType);
begin
 ResetButtonClick(nil);
end;

procedure TMainForm.ResetButtonClick(Sender: TObject);
var
 i,j:Integer;
begin
 AnimatePos:=0;
 ClichePosX:=0;
 xSize:=XUpDown.Position;
 ySize:=YUpDown.Position;
 Cliche.ColCount:=xSize;
 Cliche.RowCount:=ySize;
 Table.ColCount:=xSize;
 Table.RowCount:=ySize;

 MaxLabel.Caption:="Максимум "+IntToStr(xSize*ySize)+" символов, всего "+IntToStr(Length(TextEdit.Text))+" символов";

 SetLength(ClicheMatrix,xSize);
 SetLength(TableMatrix,xSize);
 for i:=0 to xSize-1 do
 begin
   SetLength(ClicheMatrix[i],ySize);
   SetLength(TableMatrix[i],ySize);
   for j:=0 to ySize-1 do
   begin
     ClicheMatrix[i][j]:=False;
     TableMatrix[i][j]:=#0;
   end;
 end;
 
 DecryptText.Text:="";
 Cliche.Repaint;
 Table.Repaint;
end;

procedure GetCoords(Position,MaxX,MaxY,x,y:Integer;var dx,dy:Integer);
begin
 case Position of
 1:begin
     dx:=x;
     dy:=y;
   end;
 2:begin
     dx:=x;
     dy:=MaxY-y-1;
   end;
 3:begin
     dx:=MaxX-x-1;
     dy:=y;
   end;
 4:begin
     dx:=MaxX-x-1;
     dy:=MaxY-y-1;
   end;
 end;
end;

procedure TMainForm.CryptButtonClick(Sender: TObject);
var
 i,a,m,c,x,y,dx,dy:Integer;
 Text:String;
 b:Boolean;
 Coords:array of TPoint;
 t:TPoint;
begin
 ResetButtonClick(nil);
 CryptButton.Enabled:=False;

 Text:=TextEdit.Text;
 m:=Length(Text);
 if m>xSize*ySize then
 begin
   MessageBox(Handle,"Слишком длинный текст - увеличьте матрицу!","Ошибка",MB_ICONWARNING);
   CryptButton.Enabled:=True;
   Exit;
 end;
 a:=Ceil(m/4);
 for i:=1 to a*4-m do Text:=Text+" ";

 c:=0;
 repeat
   Randomize;
   x:=Random(xSize);
   y:=Random(ySize);
   b:=True;
   for i:=1 to 4 do
   begin
     GetCoords(i,xSize,ySize,x,y,dx,dy);
     if ClicheMatrix[dx][dy] then
     begin
       b:=False;
       Break
     end;
   end;
   if b then
   begin
     ClicheMatrix[x][y]:=True;
     Inc(c);
   end;
 until c=a;
 Cliche.Repaint;

 for i:=1 to 4 do
 begin
   SetLength(Coords,a);
   c:=0;
   for y:=0 to ySize-1 do
   for x:=0 to xSize-1 do if (c<a) and ClicheMatrix[x][y] then
   begin
     GetCoords(i,xSize,ySize,x,y,dx,dy);
     Coords[c].X:=dx;
     Coords[c].Y:=dy;
     Inc(c);
   end;

   for x:=1 to a-1 do
   for y:=a-1 downto x do
   if (Coords[y-1].Y>Coords[y].Y) or ((Coords[y-1].Y=Coords[y].Y) and (Coords[y-1].X>Coords[y].X)) then
   begin
     t:=Coords[y-1];
     Coords[y-1]:=Coords[y];
     Coords[y]:=t;
   end;

   for x:=0 to a-1 do TableMatrix[Coords[x].X][Coords[x].Y]:=Text[a*(i-1)+x+1];
 end;

 for y:=0 to ySize-1 do
 for x:=0 to xSize-1 do if TableMatrix[x][y]=#0 then
 begin
   Randomize;
   c:=192+Random(65);
   if c=256 then c:=32;
   TableMatrix[x][y]:=Char(c);
 end;
 Table.Repaint;
 CryptButton.Enabled:=True;
end;

procedure TMainForm.ClicheDrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
var
 Color:TColor;
 ShiftX:Integer;
begin
 Color:=clBlack;
 if Length(ClicheMatrix)>0 then
 begin
   ShiftX:=ACol-ClichePosX;
   if ((ShiftX>=0) and ClicheMatrix[ShiftX][ARow]) or (ClichePosX>ACol) then Color:=clWhite;
 end;
 Cliche.Canvas.Brush.Color:=Color;
 Cliche.Canvas.FillRect(Rect);
end;

procedure TMainForm.TableDrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
var
 Color:TColor;
 c:Char;
 s:array[0..1] of Char;
 dx,dy:Integer;
 ShiftX:Integer;
begin
 Color:=clWhite;
 if AnimatePos>0 then
 begin
   Color:=clBlack;
   ShiftX:=xSize-ClichePosX+ACol;
   if (ShiftX>=0) and (ShiftX<xSize) then
   begin
     GetCoords(AnimatePos,xSize,ySize,ShiftX,ARow,dx,dy);
     if ClicheMatrix[dx][dy] then Color:=clWhite;
   end;
   if (ACol>=ClichePosX) then Color:=clWhite;
 end;

 Table.Canvas.Brush.Color:=Color;
 Table.Canvas.FillRect(Rect);
 if Length(TableMatrix)>0 then
 begin
   c:=TableMatrix[ACol][ARow];
   if c<>#0 then ExtTextOut(Table.Canvas.Handle,Rect.Left+(Rect.Right-Rect.Left-Table.Canvas.TextWidth(c)) div 2,Rect.Top+2,ETO_OPAQUE or ETO_CLIPPED,@Rect,StrPCopy(s,c),1,nil);
 end;
end;

procedure TMainForm.DecryptButtonClick(Sender: TObject);
var
 i,x,y,dx,dy:Integer;
begin
 DecryptButton.Enabled:=False;
 DecryptText.Text:="";

 AnimatePos:=1;
 for i:=0 to xSize do
 begin
   ClichePosX:=i;
   Cliche.Repaint;
   Table.Repaint;
   Application.ProcessMessages;
   Sleep(50*Speed.Position);
 end;

 for i:=1 to 4 do
 begin
   AnimatePos:=i;
   Cliche.Repaint;
   Table.Repaint;
   Application.ProcessMessages;
   Sleep(200*Speed.Position);
   for y:=0 to ySize-1 do
   for x:=0 to xSize-1 do
   begin
     GetCoords(i,xSize,ySize,x,y,dx,dy);
     if ClicheMatrix[dx][dy] then
     begin
       DecryptText.Text:=DecryptText.Text+TableMatrix[x][y];
       Application.ProcessMessages;
       Sleep(5*Speed.Position);
     end;
   end;
   Application.ProcessMessages;
   Sleep(200*Speed.Position);
 end;

 DecryptText.Text:=Trim(DecryptText.Text);

 AnimatePos:=1;
 for i:=xSize downto 0 do
 begin
   ClichePosX:=i;
   if ClichePosX=0 then AnimatePos:=0;
   Cliche.Repaint;
   Table.Repaint;
   if ClichePosX>0 then
   begin
     Application.ProcessMessages;
     Sleep(50*Speed.Position);
   end;
 end;
 DecryptButton.Enabled:=True;
end;

end.


 
Самуилыч   (2012-01-16 23:34) [1]

А в чем проблема-то? Дебаггер не работает?


 
Сергей М. ©   (2012-01-16 23:38) [2]

Начнем с того КОМУ нужно) ..


 
Рома   (2012-01-16 23:52) [3]

Дело в том что у меня завтра сдача курсовой работы, я ее сделал, но препод сказала что нужно доделать, т.е. добавить трассировку. Помогите пожалуйста!


 
Рома   (2012-01-17 00:00) [4]

а какой дебаггер лучше будет для Делфи???


 
Сергей М. ©   (2012-01-17 00:01) [5]


> препод сказала что нужно доделать, т.е. добавить трассировку


Ну а что ж ты молчал-то в тряпочку когда она говорила про енту самую "трассировку"?)
Нужно было тут же и с просить чего она изволит поиметь из-под тебя) ..


 
Jeer ©   (2012-01-17 00:02) [6]


> но препод сказала что нужно доделать, т.е. добавить трассировку.


Вот тут - подробнее. Что ты и она под этим понимаете и как это вам представляется ?


 
Сергей М. ©   (2012-01-17 00:04) [7]


> какой дебаггер лучше будет для Делфи?


Дебаггер он точно не для преподши твоей - он тебе нужен)
А ей, видимо, нужно чтобы работа какой-то ключевой часть алгоритма была запротоколирована в том или ином виде)


 
Плохиш ©   (2012-01-17 00:07) [8]

Представленный дерьмокод является курсовой? 8-O
Это даже на каблуху для доярок не тянет...


 
Сергей М. ©   (2012-01-17 00:08) [9]


> Jeer ©   (17.01.12 00:02) [6]


Там, похоже, был разговор слепого с глухим - преподша старой турбопаскальной закваски возжелала какие-нить WriteLn"ы в телах циклов, дабы студень наглядно продемонстрировал что код он не сдул и хоть сколь-либо понимает что в коде творится)


 
Рома   (2012-01-17 00:16) [10]

Просто подскажите как правильно сделать. Преподша молодая, много не требует, до кода ей пофиг, главное чтоб работал. Эту прогу я скачал с www.delphisources.ru Работает вроде. Кстати прога эта, шифрование методом поворотной решетки. Мне бы какую-нибудь трассировку сделать.


 
Рома   (2012-01-17 00:17) [11]


> Сергей М. ©

прям в точку)


 
Рома   (2012-01-17 00:26) [12]

Ну хоть что нибудь посоветуйте!!!


 
Inovet ©   (2012-01-17 00:30) [13]

Добавь TMemo и выводи в него.


 
Рома   (2012-01-17 00:33) [14]

Ой блин, забыл сказать, трассировку мне надо сделать не в проге, а в распечатываемом виде, на листах в курсовой.


 
Рома   (2012-01-17 00:57) [15]

Тогда помогите пошагово объяснить эту программу!!! Пожалуйста!!!!!!!!!


 
Германн ©   (2012-01-17 01:05) [16]


> Тогда помогите пошагово объяснить эту программу

Поздно.


 
Рома   (2012-01-17 01:09) [17]


> Германн ©

В каком смысле???


 
Рома   (2012-01-17 01:23) [18]

Пожалуйста, объясните пошагово программу(в кратце)!!!!!!!!!!


 
Германн ©   (2012-01-17 01:47) [19]


> Рома   (17.01.12 01:23) [18]
>
> Пожалуйста, объясните пошагово программу(в кратце)

Даже "вкратце" уже поздно. Результат всё равно будет нулевой!
Где ж ты был раньше?
Так и тянет вспомнить дедушку Крылова. :)

P.S.
Чисто теоретически. Можешь попробовать спросить помощи там, где скачал сей код. Т.е. на http://forum.sources.ru/index.php?showforum=9.
Но крайне маловероятно, что в такое время суток там кто-нибудь захочет объяснять что-то "с нуля".


 
Рома   (2012-01-17 01:57) [20]

Объяснять даже не надо, просто хотя бы комментарии к процедурам, где и что мы делаем и все!!!!


 
Германн ©   (2012-01-17 02:07) [21]


> Рома   (17.01.12 01:57) [20]
>
> Объяснять даже не надо, просто хотя бы комментарии к процедурам,
>  где и что мы делаем и все!!!!
>

А кто собственно "Мы". Т.е. те мы, которые "мы делаем"? Ты не сделал ничего. Я вообще не имею отношения к данному коду. Как и все прочие на этом форуме.
Нормальные комментарии к этому коду "не глядя"  может дать только автор сего кода. Очевидно преподша не так глупа, как вы думаете. :)


 
Германн ©   (2012-01-17 02:11) [22]


> Плохиш ©   (17.01.12 00:07) [8]
>
> Представленный дерьмокод является курсовой? 8-O


> Кстати прога эта, шифрование методом поворотной решетки.

Дык я и говорю, что "Доцент, конечно дурак, но аппаратура при нём!"


 
Рома   (2012-01-17 02:17) [23]

И на этом спасибо!


 
Ega23 ©   (2012-01-17 02:19) [24]


> Ну хоть что нибудь посоветуйте!!!


Попроси маму объяснить, как правильно подшиваться. Будешь иметь на КМБ преимущество.


 
Рома   (2012-01-17 02:27) [25]


> Ega23 ©

По своему опыту знаете???


 
Рома   (2012-01-17 02:30) [26]

Ладно, прорвусь... И не из таких ситуаций выкручивался... Всем большое спасибо!!!


 
Ega23 ©   (2012-01-17 02:44) [27]


> По своему опыту знаете???


Само-собой, старший сержант запаса всё-таки... :)


 
Германн ©   (2012-01-17 02:51) [28]


> Рома   (17.01.12 02:30) [26]
>
> Ладно, прорвусь... И не из таких ситуаций выкручивался..
> .

Удачи! Прорвёшься - значит наш!


 
sniknik ©   (2012-01-17 07:57) [29]

> значит наш!
вот уж нет, наш, это когда программирование сам сделал, а "прорвался" через философию например...


 
Омлет ©   (2012-01-17 08:04) [30]

Еще один будущий менеджер.


 
Dimka Maslov ©   (2012-01-17 10:34) [31]


> Еще один будущий менеджер.


Мне недавно рассказывали про аспиранта, который собирается считать ядрёные реакторы, не зная при этом как выглядит график функции синуса, буква тау, не говоря уже о том, чтобы от этой функции по дэ-тау взять интеграл. Так что менеджер по продажам - не самый страшный зверь.


 
Омлет ©   (2012-01-17 11:07) [32]


> Dimka Maslov ©   (17.01.12 10:34) [31]

Не удивительно, учитывая как у нас относятся к науке: http://science.compulenta.ru/655389/


 
Anatoly Podgoretsky ©   (2012-01-17 11:07) [33]


> Удачи! Прорвёшься - значит наш!

Какой наш, мы с армией уже закончили.


 
Ega23 ©   (2012-01-17 11:29) [34]


> Не удивительно, учитывая как у нас относятся к науке

Там основная проблема в выравнивании зарплат и попиле грантов. То, что его с Курчатником "объединяют" - это, в целом, не так уж и плохо. А вот тем, кто на доильном аппарате сидит, то, что денежные темы будут пересмотрены - как серпом по причиндалам.
Если в Дубне в ОИЯИ стесняются в открытую пилить, всё-таки международный институт и гранты PAC распределяет (и контролирует), то в ИТЭФ-е с этим сложнее.
Это всё опять же со слов бати, если есть желающие, могу позже комментарии предоставить.


 
Inovet ©   (2012-01-17 11:36) [35]

> [34] Ega23 ©   (17.01.12 11:29)
> Это всё опять же со слов бати, если есть желающие, могу
> позже комментарии предоставить.

Интересно бы было. Только где-то в "Прочее" была ветка про физику, если ещё не ушла в архив, в ней наверное будет лучше.


 
Inovet ©   (2012-01-17 11:50) [36]

> [35] Inovet ©   (17.01.12 11:36)
> в "Прочее" была ветка про физику

http://delphimaster.net/view/15-1316779880/


 
Dimka Maslov ©   (2012-01-17 12:00) [37]


> Омлет ©   (17.01.12 11:07) [32]


Физика — самая тёмная из наук. Всё время что-то ищут, денег просят, а толку — ноль. В лучшем случае через пару десятков лет. То ли дело юриспруденция, приносит быстрый и чистый доход практически сразу. Там даже можно свалить падение некоего предмета на провокацию империалистической военщины.


 
Рома   (2012-02-08 22:52) [38]

Ха... Прорвался!!! С армией потом разберусь, еще будет время...


 
Сергей М. ©   (2012-02-09 09:23) [39]


> Рома   (08.02.12 22:52) [38]


А мы тебя уже отпели)
Зля что ли мы тут скупые мужские слезы роняли ?)
Нет уж, давай-ка собирай вещмешок и брей макушку)..


 
Anatoly Podgoretsky ©   (2012-02-09 11:39) [40]

Конечно будет, но ты готовься.



Страницы: 1 2 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.051 c
2-1337757624
well
2012-05-23 11:20
2013.03.22
Как вывести сообщение об ожидании выполнения операции?


15-1353960706
Дмитрий С
2012-11-27 00:11
2013.03.22
Удаленная отладка Lazarus


15-1348839643
888888
2012-09-28 17:40
2013.03.22
Снять видео с экрана + звук.


2-1328170170
AV
2012-02-02 12:09
2013.03.22
Запрос к MSSSQL не возвращает данные. Почему?


15-1338040596
Германн
2012-05-26 17:56
2013.03.22
Для чего нужна функция GradToRad из модуля Math?