All streams
Search
Write a publication
Pull to refresh
0
0
SV Foster @svfoster

User

Send message
Спасибо, это окно отражает суть случившегося коротко и ясно. Долго думали над ним, но работа еще не закончена.

Про такие штуки не знал, надо попробовать. Может, правда качественные компоненты.
Так вещи засуньте в классы, которые и создавайте при загрузке. Потом просто укажите классу окна, что вот, такойто вот объект создан, пользовать его. Проблема эта без примера сложно решается)

Да, могут, конечно. И будут баги, это факт. Нужен Synchronize.
Но создание окон занимает моменты, зачем из создавать заранее? К тому же, в Windows Vista/7 показ уже созданного окна выглядит некрасиво — оно резко появляется.

У вас есть какие-то тяжеловесные операции в OnCreate окон, которые требуют много времени и не зависят от текущей ситуации в приложении? Как это так?

Эти окна в Delphi всего лишь классы, на хуйдой конец, им не нужен Synchronize. Или я не догоняю?
Да, в Delphi есть класс TThread и вызов Synchronize() который предназначен для этих целей.

К томуже, какие окна может создавать тред загрузки приложения?
Напишите, хотя бы в личку или скайп, чтобы флуд не разводить, что вы об этом думаете. Конструктивная критика всегда хороша.

Я вот так считаю, может, я где-то упускаю что-то.
Теперь я не понимаю. Си — низкоуровневый, Делфи — прикладной? Не соглашусь.

PHP — песня. Не знаю, как кто к нему относится, но сама его суть от меня ускользает. Сделайте ISAPI Extension для IIS или Apache — будет работать быстрее, возможности отладки шире. Если нет разницы, зачем изобретать новый язык?

Асм — бог языков. Но очень уж сложен для программиста. Слишком долго писать, чтобы просто вывести окно на экран…
Это не теория, это возможно, инфа 100% :)

Раньше были проблемы, да. После выхода 64битного компилятора я уже с трудом могу сказать, чего же мне не хватает…

Вы не думайте, что я только Delphi и знаю. Ровно также, или больше, я знаю C/C++. Разницы, если присмотреться, почти нет. Только Си синтаксис мне напоминает шаманство со своими << | & и прочими, по этому предпочитаю писать and or xor. Личное дело каждого, если конечный продкут идентичен.
Уточнение пришло вовремя)
Я могу писать на Delphi драйверы, приложения Windows 32/64, CMS (да да, движок сайта).

Общетематичный? Вопрос лишь во владении предметом.
Пожалуйста.

Еще вам нужно правильно обрабатывать нестандартные ситуации, возникающие во время работы. В Delphi они всегда падают в стандартное окно Access Violation или подобное, что шокирует даже опытного пользователя. Если сделаете вот так, будет намного лучше:

image
Красиво, но ресурсов жрет…
За столько времени многое изменилось. Если есть возможность сделать не на API, а на обертках, это выбор, который некоторым пригодится. Я тоже пользуюсь в Delphi WinAPI иногда, когда этого требует ситуация.

Но дальше сказали же про смерть, очевидно, смертью и не пахнет.
Я бы рекомендовал немного по-другому. Процесс загрузки приложения — сложная тема. Методом проб и ошибок я понял, что нужно делать так:

1. Дизайните Splash Screen, делаете все, что считаете с ним нужным
2. Весь процесс загрузки выводите в отдельный поток
3. В OnCreate главной формы пишите:
procedure TMainForm.FormCreate(Sender: TObject);
var
  ApplicationLoadTread: TApplicationLoadTread;
begin
  // exception
  Application.OnException:= ExceptionAction;
  SetErrorMode( SEM_FAILCRITICALERRORS );

  // splash init
  SplashForm:= TSplashForm.Create( Application );
  SplashForm.Show;
  SplashForm.Update;

  ApplicationLoading:= True;
  ApplicationLoadTread:= TApplicationLoadTread.Create;
  ApplicationLoadTread.FreeOnTerminate:= True;
  ApplicationLoadTread.OnTerminate:= MainForm.OnFormCreateFinished;
  ApplicationLoadTread.InfoLabel:= SplashForm.InfoLabel;

  ApplicationLoadTread.Start;

  // waiting 'till finished
  while ApplicationLoading do
    Application.HandleMessage;

end;


это запустит тред загрузки и выведет splash screen

4. Когда тред загрузки отработает он вызывает Callback функицию, наподобии:
procedure TMainForm.OnFormCreateFinished( Sender: TObject );
Begin
  ApplicationLoading:= False;

  // slash destroy
  SplashForm.Hide;
  SplashForm.Free;
End;



Это всязано с особенностью обработки Windows зависших приложений. Если ваш spash не бует отвечать Windows на «пинги» он будет помечен, как зависший. Тред помогает избежать этого поведения.

Главное правило при разработке GUI приложения — все действия прячьте в тред. Даже секундные. Так ваше приложение не будет «висеть» по мнению пользователя или ОС.
Коллега, скажите, вы писали на Delphi серьезно? Что-то, что выходит за рамки одной формы и перетаскивания кнопочек мышкой на форму?
Потому что «на нем программируют мышкой». Самый распространенный миф из-за малого порога вхождения. Никто не задумывается, что Delphi ничем не уступает другим средствам разработки «в глубине», потому что не знает.
Простите, а как это всязано с темой топика?
Вы описали, как сделать красивое окно с некваратными краями. А вот когда его вызывать и закрыть — в событии OnCreate главного окна или сразу после запуска, до создания Application забыли)
Со спецсимволами — беда. Почему из запрещают для меня, лично, большой вопрос. Может, я хочу использовать в пароле символ вроде 0xAE (с клавиатуры не наберешь) — мое личное дело.

Бесит еще, что о том, что пароль «неверный» узнаешь только нажав submit. Догадались? Все поля тутже очищаются, капча новая… FFUUUU эффект в чистом виде.
Тоже правда.

Но я не люблю когда мне говорит сайт, какой пароль ставить. Раздражает одним словом такая забота. Уживаюсь только с е-банками.
Мой старый пароль линкедина — 8 golf MIKE charlie BRAVO papa ROMEO foxtrot 7 x-ray romeo 0 1 uniform ROMEO victor (фонетика)
ждем расшифровку ;)

Information

Rating
Does not participate
Location
Colorado Springs, Colorado, США
Registered
Activity