Показать сообщение отдельно
  #3  
Старый 18.08.2023, 13:57
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Код:
   Move((Pointer(DataArr[NumBlock,NumData].Data))^, n1arrB[0], SectLen);
   Move((Pointer(RuleArr[NumBlock,NumRule].Data))^, n2arrB[0], SectLen);
Цитата:
Сообщение от Фёдор Сумкин
"Здесь что-то на эльфийском"
Зачем такие сложные построения, вот в них ты наверное где-то и запутался. Вот похожий на твой код я набросал, и всё гораздо проще:
Код:
type
  TSomeData = record
    Data:TBytes;
  end;
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    FParam:array of array of TSomeData;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  j: Integer;
  somedata:RawByteString;
begin
  somedata:='0123456789';
  SetLength(FParam,10);
  for i := Low(FParam) to High(FParam) do
    begin
      SetLength(FParam[i],10);
      for j := Low(FParam[i]) to High(FParam[i]) do
        begin
          SetLength(FParam[i,j].Data,10);
          Move(somedata[1],FParam[i,j].Data[0],10);    // <=== смотреть сюда
        end;
    end;
  somedata:='          ';  //чтоб не париться с длинной.
  Move(FParam[9,9].Data[0],somedata[1],10);
  ShowMessage(somedata);
end;

end.
Скорее всего из-за таких сложных преобразований у тебя поток где-то и валится. А так как нет обработчика ошибок, то при ошибке поток вываливается из Exceute, а suspended которого ты ждёшь не выставлен. И тебе кажется что поток повис, а всё гораздо лучше, он просто упал

Код:
 FindTR1.Resume; // запускаем поток
 
  tmp1 := 0;
  while FindTR1.Suspended = false do begin // ждем окончания работы потока
Это тож за гранью. Зачем нужно делать параллельно выполняющийся поток, если ты всё равно ждешь окончания его работы?

Не понятного больше чем понятного. Ну или ты передаёшь не всю картину происходящего.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием