Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2016, 16:37   #31
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
класс привилегированного процесса
Что? Причем тут привилегированность и класс?
https://ru.wikipedia.org/wiki/%D0%9A...86%D0%B8%D1%8F
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.02.2016, 16:43   #32
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Что? Причем тут привилегированность и класс?
https://ru.wikipedia.org/wiki/%D0%9A...86%D0%B8%D1%8F
Фиг знает. Я с ним никогда не работал. И с секциями тоже. Просто прочитал про это и предположил. Увы, предположение оказалось не верным .
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 17.02.2016, 18:25   #33
darkwellroad
Пользователь
 
Регистрация: 01.09.2013
Сообщений: 83
По умолчанию

Еще такой вопрос. Допустим я переведу изображение в массив. Сначала на одной картинке 6 символов разного размера. Мне нужно далее привести все символы к одному размеру. При использовании изображений это не составит труда. Как поступить с массивом? Есть ли подобные готовые функции? Т.е. нужно взять область двумерного массива и привести к определенному размеру.
darkwellroad вне форума Ответить с цитированием
Старый 17.02.2016, 19:53   #34
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Сообщение от darkwellroad Посмотреть сообщение
Еще такой вопрос. Допустим я переведу изображение в массив. Сначала на одной картинке 6 символов разного размера. Мне нужно далее привести все символы к одному размеру. При использовании изображений это не составит труда. Как поступить с массивом? Есть ли подобные готовые функции? Т.е. нужно взять область двумерного массива и привести к определенному размеру.
Капча? Да?

// ---------------------------------------------------------------------------------------------
Ни на что не претендуя, просто как пища для размышлений:
Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls,
  Vcl.Samples.Gauges;

const
  WM_THEEND = WM_USER + 1;
  WM_PROGRESS = WM_USER + 2;

type
  PTask = ^TTask;
  TTask = record
    Value: Integer;
    Flag : LongWord;
  end;

  PThreadData = ^TThreadData;
  TThreadData = record
    ThreadId: TThreadID;
    Handle: THandle;
    DataList     : TStrings;
    BeginPosition: Integer ;
  end;

  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    lbxData: TListBox;
    GroupBox2: TGroupBox;
    lbxThread: TListBox;
    Button1: TButton;
    Gauge1: TGauge;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    function GetData(Index: Integer): PTask;
    procedure WMTheEnd (var Message: TMessage); message WM_THEEND;
    procedure WMProgress (var Message: TMessage); message WM_PROGRESS;
  public
    { Public declarations }
    procedure BeginProcess;
    property Data [Index: Integer]: PTask read GetData;
  end;

procedure MyThreadProc (Data: PThreadData); stdcall;

var
  Form1: TForm1;

implementation

function XCHG (My: DWORD; Looked: PDWORD): DWORD;
asm
    XCHG  [EDX],  EAX  { !!! }
end;

procedure RandomWork;
var
  i: Integer;
  r1, r2, r3: Extended;
begin
  Randomize;
  r1 := Random;
  r2 := Random;
  for i := 1 to Random(100000) do begin
    r3 := sin(r2);
    r2 := r1;
    r1 := Sqr(Sqrt(Sqr(Sqrt(Sqr(Sqrt(Sqr(Sqrt(Sqr(Sqrt(r3))))))))))
  end;
end;

procedure MyThreadProc (Data: PThreadData); stdcall;
var
  i: Integer;
  t: PTask;
  id: DWORD;
begin
  for i := Data.BeginPosition to Data.DataList.Count-1 do begin
    t := PTask (Data.DataList.Objects[i]);
    id := GetCurrentThreadId;
    if XCHG (id, @t.Flag) = 0 then begin
      t.Value := - t.Value;

      RandomWork; // типа работаем

      PostMessage (Application.MainForm.Handle, WM_PROGRESS, i, 0);
    end;
  end;

  SendMessageTimeout (Application.MainForm.Handle, WM_THEEND, GetCurrentThreadId, 0, SMTO_NORMAL, 0, 0);
end;

{$R *.dfm}

function TForm1.GetData(Index: Integer): PTask;
begin
  Result := PTask(lbxData.Items.Objects[Index]);
end;

procedure TForm1.WMProgress(var Message: TMessage);
begin
  Gauge1.Progress := Message.WParam;
end;

procedure TForm1.WMTheEnd (var Message: TMessage);
var
  i: Integer;
  buf: PThreadData;
  tmp: PTask;
begin
  for i := 0 to lbxThread.Count-1 do begin
    buf := PThreadData (lbxThread.Items.Objects[i]);
    if buf.ThreadId = Message.WParam then begin
      lbxThread.Items.Delete(i);
      FreeMem (buf);
      Break;
    end;
  end;
  if lbxThread.Count = 0 then begin
    Gauge1 .Visible := False;
    Button1.Visible := True ;

    for i := 0 to lbxData.Count-1 do begin
      tmp := PTask (lbxData.Items.Objects[i]);
      tmp.Flag := 0;
      lbxData.Items[i] := IntToStr(tmp.Value);
    end;
  end;
end;

procedure TForm1.BeginProcess;
var
  i: Integer;
  buf: PThreadData;
begin
  Gauge1.MinValue := 0;
  Gauge1.MaxValue := lbxData.Count;
  Gauge1.Progress := 0;
  Button1.Visible := False;
  Gauge1 .Visible := True ;

  for i := 1 to 4 do begin
    New(buf);
    buf.DataList := lbxData.Items;
    buf.BeginPosition := 0;
    buf.Handle := CreateThread (nil, 0, @MyThreadProc, buf, 0, buf.ThreadId);
    lbxThread.Items.AddObject (IntToHex(buf.ThreadId, 8), TObject(buf));
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  BeginProcess;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i, j, k, c: Integer;
  r: Real;
  tmp: PTask;
begin
  Randomize;
  c := Random(100) + 1000;

  lbxData.Items.Clear;
  for i := 0 to c-1 do begin
    New(tmp);
    tmp.Value := Random(1000000);
    tmp.Flag := 0;
    lbxData.Items.AddObject (IntToStr(tmp.Value), TObject(tmp));
  end;
end;

end.
Sibedir вне форума Ответить с цитированием
Старый 17.02.2016, 20:28   #35
darkwellroad
Пользователь
 
Регистрация: 01.09.2013
Сообщений: 83
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
Капча? Да?
Да. Вопрос про сжатие массива актуален
darkwellroad вне форума Ответить с цитированием
Старый 17.02.2016, 21:26   #36
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Да. Вопрос про сжатие массива актуален
Делаете 2 функции преобразования:
1) из картинки в массив
2) из массива в картинку.
А после
Цитата:
При использовании изображений это не составит труда.
Можно ещё вот этот пример переделать под свои нужды:
http://forum.sources.ru/index.php?sh...&#entry2787608
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нейросети stdensa Фриланс 1 11.10.2014 17:23
нейросети в делфи. annuchka Помощь студентам 0 23.12.2013 17:51
нейросети С# Екатерина777 Помощь студентам 0 18.12.2012 22:01
Нейросети Kuzma_ua Общие вопросы C/C++ 0 04.02.2011 00:57
Scilab + нейросети dox07 Помощь студентам 0 08.01.2011 18:28