powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поиск последовательности в бинарном массиве
25 сообщений из 270, страница 8 из 11
Поиск последовательности в бинарном массиве
    #39588551
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bellic,

Код: pascal
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.
procedure TForm1.Test(Sender: TObject);
var
  FFile: TFileStream;
  FullName: string;
  i, m, Dlina, Addr: Integer;
  RawString: RawByteString;
  PSimvol: Byte;
  BFile: TBytes;
begin
   if OpenDialog1.Execute then
        FullName := OpenDialog1.FileName;

  FFile:=TFileStream.Create(FullName, fmOpenRead);
  try
    SetLength(BFile, FFile.Size);
    FFile.ReadBuffer(BFile, FFile.Size);
  finally
    FFile.Free;
  end;

  Addr := 0;
  Dlina := 6;
  for i := 1 to 2 do
  begin
    Memo1.Lines.Add('Prohod-'+IntToStr(i));

    //SetLength(BPoisk, Dlina);  // Инициируем длину массива
    SetLength(RawString, Dlina); {можно писать в массив байт, но мы будем писать в строку}
    for m := 0 to Dlina - 1 do    // Заполняем массив
    begin
      // быстрое чтение хекса
      PSimvol := BFile[Addr + m * 2] + (BFile[Addr + m * 2 + 1] shl 4);

      // BPoisk[m] := PSimvol;
      RawString[m + 1] := AnsiChar(PSimvol);
    end;

    Memo1.Lines.Add('Ok');
  end;
end;
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588563
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чёрт, совсем забыл :)

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
function HexToByte(const Value: Byte): Byte; inline;
begin
  Result := (Value or $20) - Byte('0');
  if (Result > 9) then
    Dec(Result, Ord('a') - Ord('0') - 10);
end;

      // быстрое чтение хекса
      PSimvol := HexToByte(BFile[Addr + m * 2]) + HexToByte(BFile[Addr + m * 2 + 1]) shl 4;
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588568
Bellic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SOFT FOR YOU, спасибо большое!!!
Догадывался, что мою мазню "перекодировки" с двумя байтами можно как то более элегантней реализовать!))) Возможно это даже не единственный вариант..
Надеюсь нули не отбрасывает, ибо они есть немаловажная часть получаемых строк!?
Вечером попробую на ХЕ и подопытных кроликах!)))
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588645
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только как это поможет искать в другом массиве ??? Если другой массив имеет мб другую последовательность байт, а не ту - которую уже тут навыдумывали.

ТС кстати похоже и сам не знает что там за последовательность байт
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588649
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НяшикТС кстати похоже и сам не знает что там за последовательность байтИ это основная проблема Bellic в данном топике.

Все эти копания в сорцах - бессмысленны, пока ТС не поймет что ему нужно сделать. В деталях.
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588674
Bellic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НяшикТолько как это поможет искать в другом массиве ??? Если другой массив имеет мб другую последовательность байт, а не ту - которую уже тут навыдумывали.
ТС кстати похоже и сам не знает что там за последовательность байт

rgreatИ это основная проблема Bellic в данном топике.
Все эти копания в сорцах - бессмысленны, пока ТС не поймет что ему нужно сделать. В деталях.
Зачем же так?
Программа собственно уже была написана мной и выполняла свою функцию, просто несколько неторопливо...
начал с простого распарсивания нужных данных, позже заострил внимание на сравнениях (ссылку не буду давать - помните несколько вариантов - на FileStream, TBufferedFileStream, TMemoryStream, TBytes...).
А вот в этой теме, по вашему же совету, в участке кода, отвечающем за Поиск и Замену, воспользовался RawByteString-ом вместо работы с Memory и TByte.
Так что "дом уже давно построен"!
Или вы думаете, что я щупаю сорцы, намереваясь позже из них строить еще не существующий код?
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588678
Bellic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большущее всем Вам Спасибо от чистого сердца, что помогали и возможно терпели мое непонимание в некоторых моментах!!!
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588684
Bellic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я уже упоминал ранее - очень заинтересовал Алгоритм Ахо-Корасика в плане применения в программе...
Но что-бы его реально пощупать и сравнить - мне придется очень много переделывать в уже достаточно разросшемся коде (на самом деле - ту несколько отдельных утилит), а все из-за того, что для Алго Ахо-Корасика нужно сразу иметь "массив" того, что нужно искать!
У меня же пока реализован последовательный тип - распарсиваем одну пару Поиск-Замена, ищем и меняем в бинарнике, затем распарсиваем вторую пару и т.д.
А надо бы одним проходом распарсить все-привсе, а потом уже браться за поиск-замену, ну естественно прикрутив Карасика..)))
Наверняка там тоже появятся какие-то вопросы..)
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588689
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bellic,

Мне непонятно, как ты открыл старый замок - новым ключом.. Да так, что бы он отлично работал... Хотяя, мне кажется что это не последняя твоя тема мольбы о помощи, в том что ты не понимаешь


По мне так, string или же RawByteString или же даже AnsiString никакого значения не имеет - совсем. Так как идёт всё тоже самое присвоение по индексу, за счёт одного - раза, выделения памяти под данные.

И что бы не быть многословным, приведу примеры, из твоего же кода

Код: pascal
1.
2.
3.
var
  FullName: string;
  RawString: RawByteString;



Присвою им значение, и открою в отладчике. И гляну как ASM код отличается во всех случаях

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Unit1.pas.46: FullName := 'ytjyuk';
8D45F8           lea eax,[ebp-$08]
BA5C805D00       mov edx,$005d805c
E85A23E3FF       call @UStrLAsg
Unit1.pas.47: RawString := 'ytjyuk';
8D45F4           lea eax,[ebp-$0c]
BA78805D00       mov edx,$005d8078
E8E923E3FF       call @LStrLAsg
Unit1.pas.49: FullName[1] := 'H';
8D45F8           lea eax,[ebp-$08]
E8C924E3FF       call @UniqueStringU
66C7004800       mov word ptr [eax],$0048
Unit1.pas.50: RawString[1] := 'H';
8D45F4           lea eax,[ebp-$0c]
E8C424E3FF       call @UniqueStringA
C60048           mov byte ptr [eax],$48




Можем заметить, что при присвоении по индексу, в случае RawByte был использован byte прессование, а там word

И использованы функции
Код: pascal
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.
procedure _LStrLAsg(var Dest: _AnsiStr; const Source: _AnsiStr);
var
  P: Pointer;
begin
  P := Pointer(Source);
  if P <> nil then
    _LStrAddRef(P);
  P := Pointer(Dest);
  Pointer(Dest) := Pointer(Source);
  _LStrClr(P);
end;

procedure _UStrLAsg(var Dest: UnicodeString; const Source: UnicodeString); // locals
var
  P: Pointer;
begin
  if Pointer(Source) <> nil then
    _UStrAddRef(Pointer(Source));
  P := Pointer(Dest);
  Pointer(Dest) := Pointer(Source);
  _UStrClr(P);
end;

function _LStrClr(var S): Pointer;
var
  P: PStrRec;
begin
  if Pointer(S) <> nil then
  begin
    P := Pointer(PByte(S) - SizeOf(StrRec));
    Pointer(S) := nil;
    if P.refCnt > 0 then
    begin
      if AtomicDecrement(P.refCnt) = 0 then
        FreeMem(P);
    end;
  end;
  Result := @S;
end;

function _UStrClr(var S): Pointer;
var
  P: PStrRec;
begin
  if Pointer(S) <> nil then
  begin
    P := Pointer(PByte(S) - SizeOf(StrRec));
    Pointer(S) := nil;
    if P.refCnt > 0 then
    begin
      if AtomicDecrement(P.refCnt) = 0 then
        FreeMem(P);
    end;
  end;
  Result := @S;
end;



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

Так что, нужно написать тестер - который покажет, есть ли она разница и на сколько

Код: pascal
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.
program Project1;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  Winapi.Windows,
  System.SysUtils;

var
  StartTime, StopTime: Int64;
  iCounterPerSec: Int64;
  I, S: Integer;

procedure BeginTime;
begin
  QueryPerformanceCounter(StartTime);
end;

procedure EndTime;
begin
  if QueryPerformanceCounter(StopTime) and QueryPerformanceFrequency
    (iCounterPerSec) then
    Writeln(Format('%.6f', [(StopTime - StartTime) / iCounterPerSec]));
end;

procedure TestString;
var
  str: string;
  r: Integer;
begin
  SetLength(str, 255);
  for I := 0 to 50000000 do
  begin
    r := I mod 255;
    str[r] := chr(r);
  end;
end;

procedure TestRawByteString;
var
  str: RawByteString;
  r: Integer;
begin
  SetLength(str, 255);
  for I := 0 to 50000000 do
  begin
    r := I mod 255;
    str[r] := AnsiChar(r);
  end;
end;

procedure TestStringGlobalSet;
var
  str: string;
  r: Integer;
begin
  for S := 0 to 10000 do
  begin
    str := '';
    for I := 0 to 1000 do
      str := str + chr(I);
  end;
end;

procedure TestRawByteStringGlobalSet;
var
  str: RawByteString;
  r: Integer;
begin
  for S := 0 to 10000 do
  begin
    str := '';
    for I := 0 to 1000 do
      str := str + AnsiChar(I);
  end;
end;

begin
  Write('String Set Index: ');
  BeginTime;
  TestString;
  EndTime;

  Write('RawByteString Set Index: ');
  BeginTime;
  TestString;
  EndTime;

  Writeln(' ---------- ');

  Write('String Set global: ');
  BeginTime;
  TestStringGlobalSet;
  EndTime;

  Write('RawByteString Set global: ');
  BeginTime;
  TestRawByteStringGlobalSet;
  EndTime;

  Readln;

end.



Тесты такие
String Set Index: 0,294398
RawByteString Set Index: 0,291288
----------
String Set global: 0,584003
RawByteString Set global: 0,599694

Ураа!!! В случае установки по индексу, ты выиграл целых 0.00311!!!!! Поздравляю!!!!
Но в случае с установкой, + дописыванию, ты потеря целых 0.015691

Тестировал с включённой оптимизацией. Без неё
String Set Index: 0,288884
RawByteString Set Index: 0,294933
----------
String Set global: 0,570846
RawByteString Set global: 0,606367


Вообще !!! RawByteString проигрывает
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588714
Bellic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Няшик, попрошу поосторожней быть в своих выражениях и прочитать еще раз на всякий случай "Правила" данного форума!!!

(Цитата из правил: Форум предназначен для обсуждения вопросов, связанных с СУБД и родственными темами. Возможно обсуждение других вопросов согласно наименованию разделов форума.)

Я по сути - спрашивал совета знающих и более опытных людей, и получал на них ответы - кому было не лень читать и отвечать - помогали мне в решении вопросов!
Никого насильно в Тему я не затаскивал и уж тем более - на коленях с мольбой не стоял!

Кстати - еще раз отдельное спасибо SOFT FOR YOU за его терпимость к моему упрощению вызова Диалогового окна:
Код: pascal
1.
2.
   if OpenDialog1.Execute then
        FullName := OpenDialog1.FileName;

- Человек и так понял суть, и не стал читать морали и уводить в сторону обсуждение!

Что касается АСМа, то до таких внутренностей Дэлфи я еще не спустился (или не поднялся), хотя в свое время изучал и EC ЭВМ с его Асмом, а позже - Асм СPU 580, Z80, 1801-1803...

Няшик, спасибо и Вам за подсказки и участие в обсуждении!
Будут вопросы - конечно же обращусь сюда еще и возможно не раз! Да, пинали, но не до смерти же?!..))
Или Вы против?..)))
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588729
Bellic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Жаль правда, код от SOFT FOR YOU не дал ожидаемого результата, ни с функцией, ни без нее!
Вкурю покамесь и пошагово побегаю по нему - может и заработает правильно!..)
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588731
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшик,

Не понял, что ты тестировал
Но RawByteString может проигрывать на операции присвоения символа, т.к. при каждом присвоении вызывается UniqueString

Bellic,

Ну так я тебе тысячу раз говорил, мол выкладывай свой тест. В итоге оказалось, у тебя вообще ничего нет. Мы не сможем показать тебе Ахо-Корасика и быстрый Replace - если ты сам не открываешь код.

А что до диалога... ну я согласен, ты просто не знаешь как принято работать с диалогом и ребята тебе на это указали. Я показал try/finally - это тоже стандартный способ создания/удаления объектов. А так дерзай. Здорово, что человек не связанный профессией с программированием, делает такие успехи.
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588738
Bellic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SOFT FOR YOU А что до диалога... ну я согласен, ты просто не знаешь как принято работать с диалогом и ребята тебе на это указали. Я показал try/finally - это тоже стандартный способ создания/удаления объектов.
Не поверишь - знаю прекрасно и как Диалогами пользоваться и try/finally - просто для теста упростил код, на скорую руку, чтоб он работал, и не думая что найдутся "умники", желающие щелкнуть на Крестик, открыть файл нулевой длины или вообще отказаться от загрузки файла в открытом диалоге!!! Код для Вас был - в надежде, что сокращение поймете молча!
Ну что тут было не понятно??? Сколько можно уже мусолить???

P.S. В своих реальных программах стараюсь ничем не пренебрегать, не упрощать и предусматривать все возможные варианты (возможно даже уж черезчур строго), особенно что касается выбора файлов или же некорректные действия пользователя (например выбор файла - только через диалоговое окно с последующей кучей проверок, ТEdit-ы индикации выбранных файлов при этом делаю ReadOnly и т.д.)
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588745
Bellic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SOFT FOR YOU Ну так я тебе тысячу раз говорил, мол выкладывай свой тест. В итоге оказалось, у тебя вообще ничего нет. Мы не сможем показать тебе Ахо-Корасика и быстрый Replace - если ты сам не открываешь код.
Чего это у меня нет?
Выкладывать сюда код реального набора утилит?..))
Извините - такого в мои планы не входило! (Три юнита и более 3000 строк включая комменты!)
Это породило бы еще больше вопросов и мнений - как бы кто реализовал то или иное место!
А еще пришлось бы рассказывать ТехЗадание и форматы файлов - еще неделя пустых разговоров и придирок...
Оно Вам надо???

P.S. а Ахо-Красика, будет время, я после и сам думаю сумею освоить!
Что касается Replace, то он мне не подходит, потому что:
1. Необходим подсчет произведенных замен
2. Кроме автоматического режима будет еще и полу-автомат с подтверждением
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588771
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BellicНяшик, попрошу поосторожней быть в своих выражениях и прочитать еще раз на всякий случай "Правила" данного форума!!!

А что я написал не так ??? Скорее, ты прочитал что - то не так..

Bellicк моему упрощению вызова Диалогового окна:

Да ты мог бы написать так
Код: pascal
1.
2.
  OpenDialog1.Execute;
FullName := OpenDialog1.FileName;



Было бы тоже самое.

SOFT FOR YOUНяшик,
Не понял, что ты тестировал
Но RawByteString может проигрывать на операции присвоения символа, т.к. при каждом присвоении вызывается UniqueString


Производительность типов. Но, при установки в индексы - слишком маленький выигрыш, у меня на компьютера составляет от 0.00600 до 0.00100
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588772
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bellic,

Тебя просили выложить маленький - реальный пример, подобного - имитирующего то, что тебе надо было реализовать. Чтоб, не гадать алгоритмы какие - то, исходя из твоих надуманных годов, и мол - так может быть, но я и сам не знаю. По этому, подскажите мне, гадая на своих шарах
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588773
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НяшикЧтоб, не гадать алгоритмы какие - то, исходя из твоих надуманных годов, и мол - так может быть, но я и сам не знаю. По этому, подскажите мне, гадая на своих шарахЭто уже не первая его тема такая)
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588837
Bellic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Няшик, лично для Вас - дополнил инфу в своем профиле!..)))
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39588861
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bellicдополнил инфу в своем профиле!..)))
да ты - романтик ;)
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39589061
Bellic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Докда ты - романтик ;) Спасибо за комплемент, Док !..))

Разобрался где ошибка в коде SOFT FOR YOU :
Код: pascal
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.
procedure TForm1.Test(Sender: TObject);
var
  FFile: TFileStream;
  FullName: string;
  i, m, Dlina, Addr: Integer;
  RawString: RawByteString;
  PSimvol: Byte;
  BFile: TBytes;
begin
   if OpenDialog1.Execute then
        FullName := OpenDialog1.FileName;

  FFile:=TFileStream.Create(FullName, fmOpenRead);
  try
    SetLength(BFile, FFile.Size);
    FFile.ReadBuffer(BFile, FFile.Size);
  finally
    FFile.Free;
  end;

  Addr := 0;
  Dlina := 6;
  for i := 1 to 2 do
  begin
    Memo1.Lines.Add('Prohod-'+IntToStr(i));

    //SetLength(BPoisk, Dlina);  // Инициируем длину массива
    SetLength(RawString, Dlina); {можно писать в массив байт, но мы будем писать в строку}
    for m := 0 to Dlina - 1 do    // Заполняем массив
    begin
      // быстрое чтение хекса

      // БЫЛО ТАК (строку заремить!):
      PSimvol := HexToByte(BFile[Addr + m * 2]) + HexToByte(BFile[Addr + m * 2 + 1]) shl 4

      // ПРАВИЛЬНО ТАК:
      PSimvol := HexToByte(BFile[Addr + m * 2]) shl 4 + HexToByte(BFile[Addr + m * 2 + 1]);

      // BPoisk[m] := PSimvol;
      RawString[m + 1] := AnsiChar(PSimvol);
    end;

    Memo1.Lines.Add('Ok');
  end;
end;

В результате у автора была сдвинута влево младшая тетрада вместо старшей, а это значит к примеру вместо
PSimvol= $31 получалось $13 , ну и в RawString - полная каша!
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39589081
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bellic,

Разве в твоём файле нет бинарных данных ? Юникод там
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39589091
Bellic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НяшикРазве в твоём файле нет бинарных данных ? Юникод там
Доброе утро! Только проснулся?...))))
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39589108
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bellic,

Дай - ка вспомнить, хм... Я пошёл спать в 8 и проснулся в 13:30... Хм.. Сейчас 16:03 и делаем сложный расчёт 16-13 : 30 - 03 получается 3:10 уже кааак

А сиго?
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39589127
Bellic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Няшик, хочешь разминку для мозгов?..))
Мой вариант кода в цикле на 1000 итераций выполнился за 0,85 а быстродействующий SOFT FOR YOU - за 0,92 секунды!..))
Исходники выложить или сам хрустальными шарами сообразишь?..))
...
Рейтинг: 0 / 0
Поиск последовательности в бинарном массиве
    #39589139
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bellic,

Вот блин, к чему это??? Конечно же его код, может работать медленнее - при неправильном использование...

Кстати, я нАрочно кое где сделал ошибку, а ты и не заметил?

... Меня до сих пор волнует, каким образом - ты его структуру, в свой код применил.

И кстати - да, ты правильно заметил что у него в алгоритме ошибка. В SysUtils есть такая функция
Код: pascal
1.
2.
3.
4.
  function HexByte(p: PChar): Byte;
  begin
    Result := Byte((HexChar(p[0]) shl 4) + HexChar(p[1]));
  end;



Которая выполняет ту же логику.
...
Рейтинг: 0 / 0
25 сообщений из 270, страница 8 из 11
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Поиск последовательности в бинарном массиве
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]