Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Night_Chaser
0 / 0 / 1
Регистрация: 28.10.2015
Сообщений: 32

Кодирование информации

10.10.2016, 23:26. Показов 1222. Ответов 10

Студворк — интернет-сервис помощи студентам
Всем привет! Вот есть программа отчасти не исправная, помогите разобраться в чем у меня ошибка и как ее исправить. Всем буду благодарен за помощь.
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
112
113
114
115
116
117
118
119
120
unit Unit1;
 
interface
 
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ToolWin, ComCtrls, Grids, ExtCtrls;// mat_code {Может быть не то подключил???} , XPMan;
 
type
  TForm1 = class(TForm)
    CoolBar1: TCoolBar;
    Panel6: TPanel;
    Label3: TLabel;
    edText: TEdit;
    memAnalyze: TMemo;
    Panel2: TPanel;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    sgShannonFano: TStringGrid;
    TabSheet2: TTabSheet;
    Label1: TLabel;
    memShannonFano: TMemo;
    sgHuffman: TStringGrid;
    memHuffman: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure edTextChange(Sender: TObject);
  private
    { Private declarations }
    {Подскажите как правильно это реализовать?!}
    FModeler: TMatModeler;
    FCoderShannonFano: TMatCoder;
    FCoderHuffman: TMatCoder;
    procedure CreateCoderInfo(Coder: TMatCoder; StringGrid: TStringGrid; Memo: TMemo);
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
uses math;
{$R *.dfm}
 
procedure TForm1.edTextChange(Sender: TObject);
begin
  FModeler.Execute(edText.Text);
  FCoderShannonFano.Execute;
  FCoderHuffman.Execute;
  with memAnalyze, Lines, FModeler do
  begin
    Clear;
    Add(Format('Длина сообщения (символов): %d', [Length(FModeler.Text)]));
    Add(Format('Кол-во символов алфавита: %d',[CharsPerTable]));
    Add(Format('Длина символа при равномерном кодировании (бит): %d', [BitsPerChar]));
    Add(Format('Длина сообщения при равномерном кодировании (бит): %d', [BitsPerText]));
      end;
  CreateCoderInfo(FCoderShannonFano, sgShannonFano, memShannonFano);
  CreateCoderInfo(FCoderHuffman, sgHuffman, memHuffman);
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  FModeler := TMatModeler.Create;
  FCoderShannonFano := TMatCoderShannonFano.Create(FModeler);
  FCoderHuffman := TMatCoderHuffman.Create(FModeler);
  edText.OnChange(Self);
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  FModeler.Free;
end;
 
procedure TFormMain.CreateCoderInfo(Coder: TMatCoder; StringGrid: TStringGrid; Memo: TMemo);
var rc, k, i, ci: Integer;
    CharItem: PMatCharTableItem;
    CodeItem: PMatCodeTableItem;
begin
  with StringGrid, Coder do
  begin
    rc := FModeler.CharsPerTable + 1;
    if rc = 1 then
    begin
       Inc(rc);
       Rows[1].Clear;
    end;
 
    RowCount := rc;
    Cells[0, 0] := 'Символ';
    Cells[1, 0] := 'Вероятность';
    Cells[2, 0] := 'Код';
 
    for k := 0 to CodesPerTable-1 do
    begin
      ci := CodeIndex[k];
      CodeItem := CodeTable[ci];
      CharItem := FModeler.CharTable[CodeItem.CharItem.Value];
 
      Cells[0, k+1] := Format('"%s"', [Chr(CodeItem.CharItem.Value)]);
      Cells[1, k+1] := Format('%.5f', [CharItem.Probability]);
      Cells[2, k+1] := Format('%s', [CodeItem.Code]);
      for i := 1 to Length(CodeItem.Code) do Cells[2 + i, k+1] := CodeItem.Code[i];
      for i := Length(CodeItem.Code) + 1 to 32 do Cells[2 + i, k+1] := '';
    end;
  end;
  with Memo, Lines, Coder do
  begin
    Clear;
    Add(Format('Средняя длина кода: %.5f',[AvgCodeLength]));
    Add(Format('Коэффициент относительной эффективности: %.5f',[RatioEffective]));
    Add(Format('Коэффициент сжатия кода: %.5f',[RatioCompression]));
    Add(Format('Длина сжатого сообщения (бит): %d', [BitsPerText]));
  end;
end;
 
 
end.
Вложения
Тип файла: rar КОДИРОВАНИЕ.RAR (4.2 Кб, 6 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.10.2016, 23:26
Ответы с готовыми решениями:

Кодирование информации
Необходимо разработать программу для кодирования информации, используя код (по варианту), при этом для устранения последовательностей нулей...

Кодирование графической информации
мне надо составить типо проект на языке дельфи,КОДИРОВАНИЕ ГРАФИЧЕСКОЙ ИНФОРМАЦИИ типо обучающей программы))

Кодирование
Мне нужно написать программку, которая будет кодировать предложения с помощью метода LZ78, или похожим методом(LZ77, LZW, LZSS). Прошу...

10
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
10.10.2016, 23:56
Тебе нужен вот этот модуль
1
 Аватар для Night_Chaser
0 / 0 / 1
Регистрация: 28.10.2015
Сообщений: 32
11.10.2016, 08:28  [ТС]
Спасибо большое, но теперь жалуется вот на этот кусочек кода:
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
112
113
114
115
116
117
118
119
unit Unit1;
 
interface
 
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ToolWin, ComCtrls, Grids, ExtCtrls, mat_code, XPMan;
 
type
  TForm1 = class(TForm)
    CoolBar1: TCoolBar;
    Panel6: TPanel;
    Label3: TLabel;
    edText: TEdit;
    memAnalyze: TMemo;
    Panel2: TPanel;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    sgShannonFano: TStringGrid;
    TabSheet2: TTabSheet;
    Label1: TLabel;
    memShannonFano: TMemo;
    sgHuffman: TStringGrid;
    memHuffman: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure edTextChange(Sender: TObject);
  private
    { Private declarations }
    FModeler: TMatModeler;
    FCoderShannonFano: TMatCoder;
    FCoderHuffman: TMatCoder;
    procedure CreateCoderInfo(Coder: TMatCoder; StringGrid: TStringGrid; Memo: TMemo);
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
uses math;
{$R *.dfm}
 
procedure TForm1.edTextChange(Sender: TObject);
begin
  FModeler.Execute(edText.Text);
  FCoderShannonFano.Execute;
  FCoderHuffman.Execute;
  with memAnalyze, Lines, FModeler do
  begin
    Clear;
    Add(Format('Длина сообщения (символов): %d', [Length(FModeler.Text)]));
    Add(Format('Кол-во символов алфавита: %d',[CharsPerTable]));
    Add(Format('Длина символа при равномерном кодировании (бит): %d', [BitsPerChar]));
    Add(Format('Длина сообщения при равномерном кодировании (бит): %d', [BitsPerText]));
      end;
  CreateCoderInfo(FCoderShannonFano, sgShannonFano, memShannonFano);
  CreateCoderInfo(FCoderHuffman, sgHuffman, memHuffman);
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  FModeler := TMatModeler.Create;
  FCoderShannonFano := TMatCoderShannonFano.Create(FModeler);//жалуется на эту строчку
  FCoderHuffman := TMatCoderHuffman.Create(FModeler);
  edText.OnChange(Self);
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  FModeler.Free;
end;
 
procedure TFormMain.CreateCoderInfo{<--жалуется на эту строчку}(Coder: TMatCoder; StringGrid: TStringGrid; Memo: TMemo);
var rc, k, i, ci: Integer;
    CharItem: PMatCharTableItem;
    CodeItem: PMatCodeTableItem;
begin
  with StringGrid, Coder do
  begin
    rc := FModeler.CharsPerTable + 1; //жалуется на эту строчку
    if rc = 1 then
    begin
       Inc(rc);
       Rows[1].Clear;
    end;
 
    RowCount := rc;
    Cells[0, 0] := 'Символ';
    Cells[1, 0] := 'Вероятность';
    Cells[2, 0] := 'Код';
 
    for k := 0 to CodesPerTable-1 do
    begin
      ci := CodeIndex[k];
      CodeItem := CodeTable[ci];
      CharItem := FModeler.CharTable[CodeItem.CharItem.Value]; //жалуется на эту строчку
 
      Cells[0, k+1] := Format('"%s"', [Chr(CodeItem.CharItem.Value)]);
      Cells[1, k+1] := Format('%.5f', [CharItem.Probability]);
      Cells[2, k+1] := Format('%s', [CodeItem.Code]);
      for i := 1 to Length(CodeItem.Code) do Cells[2 + i, k+1] := CodeItem.Code[i];
      for i := Length(CodeItem.Code) + 1 to 32 do Cells[2 + i, k+1] := '';
    end;
  end;
  with Memo, Lines, Coder do
  begin
    Clear;
    Add(Format('Средняя длина кода: %.5f',[AvgCodeLength]));
    Add(Format('Коэффициент относительной эффективности: %.5f',[RatioEffective]));
    Add(Format('Коэффициент сжатия кода: %.5f',[RatioCompression]));
    Add(Format('Длина сжатого сообщения (бит): %d', [BitsPerText]));
  end;
end;
 
 
end.
Вложения
Тип файла: rar КОДИРОВАНИЕ.rar (102.7 Кб, 5 просмотров)
0
 Аватар для Night_Chaser
0 / 0 / 1
Регистрация: 28.10.2015
Сообщений: 32
13.10.2016, 11:45  [ТС]
northener, можешь подсказать что еще необходимо сделать для работоспособности программы?
0
82 / 82 / 39
Регистрация: 17.02.2016
Сообщений: 464
13.10.2016, 13:05
у вас форма TForm1
откуда взялось TFormMain? копипастить без малейшего понимания кода как минимум глупо


п.с воспользуйтесь гугл переводом ошибок
Необъявленный идентификатор: 'TMatCoderShannonFano'
1
60 / 60 / 26
Регистрация: 30.05.2016
Сообщений: 293
13.10.2016, 13:56
Delphi
1
procedure TForm1.CreateCoderInfo{<--жалуется на эту строчку}(Coder: TMatCoder; StringGrid: TStringGrid; Memo: TMemo);
Добавлено через 2 минуты
TMatCoderShannonFano нигде нету, может TMatCoder?
1
 Аватар для Night_Chaser
0 / 0 / 1
Регистрация: 28.10.2015
Сообщений: 32
14.10.2016, 10:23  [ТС]
HiredKiller, да, это мой косяк, сам не внимательно посмотрел код, спасибо за доп.подсказку, не могли бы вы еще раз помочь не опытному человеку в написании программы.
Прога запускается с крахом с ошибкой о том что нету доступа к памяти, при вводе каких либо символов в edit вылетает таже самая ошибка, я сам разобраться не смог и прошу Вашей помощи если у Вас есть время на это.
Вложения
Тип файла: rar Новая папка.rar (2.41 Мб, 9 просмотров)
0
 Аватар для Night_Chaser
0 / 0 / 1
Регистрация: 28.10.2015
Сообщений: 32
14.10.2016, 23:22  [ТС]
northener, Не могли бы Вы мне подсказать еще раз?
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
15.10.2016, 01:31
Сейчас не могу. Первая подсказка была лёгкой. Там думать не надо было.
Если до понедельника проблема не разрешится, тогда попробую подумать.
1
82 / 82 / 39
Регистрация: 17.02.2016
Сообщений: 464
15.10.2016, 09:26
del
0
 Аватар для Night_Chaser
0 / 0 / 1
Регистрация: 28.10.2015
Сообщений: 32
17.10.2016, 12:15  [ТС]
northener, Будет время, сможете помочь? А то я сам не смог за выходные разобраться с проблемой
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.10.2016, 12:15
Помогаю со студенческими работами здесь

Кодирование
здравствуйте всем, помогите плз: закодируйте текст,заменяя один символ другим по определенному правилу,+ текст находиться в тестовом...

Кодирование пароля
Нашел вот такой код. Объясните пожалуйста функцию. var Form1: TForm1; N:byte; implementation uses timer; {$R...

кодирование/декодирование
надо написать программу в Делфи.... вот работа программы.... Ввод текста(последовательность символов). программа определяет...

Кодирование на Delphi
Возможно ли на Delphi закодировать буквы на русском алфавите? Каким образом?

Кодирование символов
Ребят кто может помочь в этом 2. Закодировать и раскодировать текст по следующему правилу: заменить каждый символ его порядковым номером...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru