Показать сообщение отдельно
  #9  
Старый 01.06.2011, 15:18
Cramol Cramol вне форума
Прохожий
 
Регистрация: 31.05.2011
Сообщения: 13
Репутация: 10
По умолчанию

AND_REY, действительно - скорость практически мгновенная даже на больших файлах! Идеально! Спасибо огромное!

Ребят, а ещё один вопрос. Скажите, как лучше реализовать (по какой формуле, что ли) следующее:
Вот строится картинка. Кол-во её пикселей составляет 480.000. В идеале соотношение сторон будет 800х600.
Если сделать вот так:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 Z, W, H, I: integer;
begin
 H := 0;
 W := 0;
 Z := StrToInt(Edit1.Text);
 for I := Trunc(Sqrt(Z)) downto 1 do
 begin
   H := I;
   W := Z div H;
   if W * H = Z then
     break
 end;
 ShowMessage(Format('W = %d, H = %d', [W, H]))
end;

...то, в принципе, все нормально - 750x640 тоже будет смотреться, скажем так, "наглядно" для человека.
Но вот проблема: если число пикселей будет 480.001, то остается лишь один вариант - 12973х37. Картинка с такой длиной и высотой для пользователя, конечно, не самый лучший вариант. У этого числа только два таких простых множителя, другого разложения на множители нет.
Выходит, в таких случаях лучше будет, нпаример, дописать ещё один любой пиксель? Он будет не заметен на общей картинке, но тогда длина и ширина более "человечные" получатся.
Ответить с цитированием