Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Шичко Игорь
Статус: Практикант
Рейтинг: 186
∙ повысить рейтинг >>
Виктор Пырлик
Статус: Профессионал
Рейтинг: 57
∙ повысить рейтинг >>
Genia007
Статус: Студент
Рейтинг: 51
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 1243
от 29.11.2008, 23:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 406, Экспертов: 52
В номере:Вопросов: 6, Ответов: 8

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 151558: здравствуйте уважаемые эксперты решил добавить в прогу ведение логов ошибок и натолкнулся на проблемку. Не знаю как можно получить имя процедуры в которой была вызвана эта процедура. Тоесть я для отлавливания всех ошибок использую Appli...


Вопрос № 151671: Здравствуйте, уважаемые эксперты! Нужно загрузить графический файл в TImage и предотвратить открытие испорченных или пустых файлов. Например, создаю пустой файл пустышка.JPG и при попытке его открыть выскакивает окошко "JPEG error #42" ,...
Вопрос № 151691: Уважаемые эксперты,подскажите пожалуйста новичку как прописать програмку.... так что бы по истечении 1минуты программа закрывалась...Заранее благодарю......
Вопрос № 151694: Уважаемые эксперты, как прописать таймер что бы он отсчитывал время назад и был видим на форме(в label или pan el) и после того как время будет 00:00:00 программа закроется??...
Вопрос № 151696: Здравствуйте, господа эксперты. Имеется следующая проблема. Главное окно программы скрывается по правому тыку на кнопке в панели инструментов, вот так <div style="margin:15px; margin-top:10px"><div><b><font color="gray">Код:</font></b></div><pr...
Вопрос № 151701: Здравствуйте! У меня проблема: мне необходимо сделать программу, которая будет вращать квадрат. У меня не получается это сделать, т.е. частично я это сделал - у меня получается вращение какой-то другой фигуры, но как превратить ее в квадрат я не з...

Вопрос № 151.558
здравствуйте уважаемые эксперты

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

Тоесть я для отлавливания всех ошибок использую ApplicationEvents (ну чтобы в каждой процедуре не писать try....except) OnException

в ней написал :

DebuggerLogs(E.Message);

DebuggerLogs - просто пишет в лог все ошибки

вопрос - как кроме ошибок в таком варианте получить еще и имя процедуры в которой она произошла ?

Специализированные библиотеки компонентов прошу не предлагать - я про них сам знаю :)
Отправлен: 23.11.2008, 18:47
Вопрос задал: source (статус: 2-й класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Шевченко Дмитрий
Здравствуйте, source!

Можно сделать глобальную переменную типа String и в начале каждой процедуры записывать в неё название этой процедуры. В случае ошибки - записать её значение в лог.
Ответ отправил: Шевченко Дмитрий (статус: 5-й класс)
Ответ отправлен: 23.11.2008, 19:36

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 236453 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 4
    Комментарий оценки:
    не - у меня более 40 000 строк в программе
    если не получится, то буду использовать баблиотеку бля создания багрепорта как в QIP Infirm


    Вопрос № 151.671
    Здравствуйте, уважаемые эксперты!
    Нужно загрузить графический файл в TImage и предотвратить открытие испорченных или пустых файлов. Например, создаю пустой файл пустышка.JPG и при попытке его открыть выскакивает окошко "JPEG error #42" , а я хочу, чтобы выводилось осмысленное сообщение, типа "Файл поврежден" (см. листинг). Подскажите, как быть?

    Приложение:

    Отправлен: 24.11.2008, 17:52
    Вопрос задал: Гидроген (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 9)

    Отвечает: Виктор Пырлик
    Здравствуйте, Гидроген!

    вот так попробуйте
    Код:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if OpenPictureDialog1.Execute then
    begin
    try
    Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
    except on e:Exception do
    MessageBox(GetActiveWindow,PChar(Format('Ошибка:%s'#13+'файл поврежден',[e.Message])),'Ошибка',MB_OK+MB_ICONSTOP);
    end;
    end;
    end;



    ---------
    не получается там - где не пробуют
    Ответ отправил: Виктор Пырлик (статус: Профессионал)
    Россия, Екатеринбург
    Тел.: 89043822027
    ICQ: 490191733
    ----
    Ответ отправлен: 24.11.2008, 18:11

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 236558 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 151.691
    Уважаемые эксперты,подскажите пожалуйста новичку как прописать програмку.... так что бы по истечении 1минуты программа закрывалась...Заранее благодарю...
    Отправлен: 24.11.2008, 19:18
    Вопрос задал: Dorik (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 4)

    Отвечает: Максим Sly
    Здравствуйте, Dorik!
    В делфи нужно на форме разместить компонент время(TIMER) на вкладке System
    на форме, для процедуры FormActivate (Активация формы) написать следующее
    procedure Tform1.FormActivate(Sender: TObject);
    begin

    form1.Timer1.Enabled := true;
    end;

    после для Timer указываем количество секунд, которое он будет работать и после чего произойдет выполнение следующей процедуры (для саого таймера)

    procedure Tform1.Timer1Timer(Sender: TObject);
    begin
    Application.Terminate; // закрытие программы
    end;


    ---------
    Мы не ищем легких путей.... они сами нас находят:)
    Ответ отправил: Максим Sly (статус: 1-й класс)
    Ответ отправлен: 24.11.2008, 19:28

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 236577 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 151.694
    Уважаемые эксперты, как прописать таймер что бы он отсчитывал время назад и был видим на форме(в label или panel) и после того как время будет 00:00:00 программа закроется??
    Отправлен: 24.11.2008, 19:51
    Вопрос задал: Dorik (статус: Посетитель)
    Всего ответов: 2
    Мини-форум вопроса >>> (сообщений: 2)

    Отвечает: Виктор Пырлик
    Здравствуйте, Dorik!

    вот код
    Код:

    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, ExtCtrls, StdCtrls,DateUtils;

    type
    TForm1 = class(TForm)
    Label1: TLabel;
    Timer1: TTimer;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    public
    mtime:TDateTime;
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    mtime := StrToTime('00:00:59');// установим время - 59 секунд
    T imer1.Interval := 1000; //1 секунда
    Timer1.Enabled := false;
    end;

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    mtime :=IncSecond(mtime,-1); // уменьшаяем на 1 секунду
    if mtime >0 then
    begin
    Label1.Caption := TimeToStr(mtime); // отображаем
    end
    else
    begin
    Timer1.Enabled := false; // останавливаем таймер
    //Close; // или закрываем приложение
    end;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Timer1.Enabled := true;
    end;

    end.



    ---------
    не получается там - где не пробуют
    Ответ отправил: Виктор Пырлик (статус: Профессионал)
    Россия, Екатеринбург
    Тел.: 89043822027
    ICQ: 490191733
    ----
    Ответ отправлен: 24.11.2008, 20:31

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 236584 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5


    Отвечает: Drbear
    Здравствуйте, Dorik!
    Попробуйте вариант без использования таймера (в приложении).

    Приложение:

    Ответ отправил: Drbear (статус: Студент)
    Ответ отправлен: 24.11.2008, 20:47

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 236588 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5


    Вопрос № 151.696
    Здравствуйте, господа эксперты.
    Имеется следующая проблема. Главное окно программы скрывается по правому тыку на кнопке в панели инструментов, вот так
    Код:
    procedure TMainForm.ToolButton2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
    X, Y: Integer);
    begin
    case Button of
    mbRight:
    MainForm.Hide;
    mbLeft:
    Close;
    end;
    end;

    Также в коде самого проекта есть такое
    Код:
    begin
    if mmm then
    begin
    ShowWindow(FindWindow('TMainForm','Главное окн о'),SW_RESTORE);
    Application.Terminate;
    end
    else
    begin
    SplashForm:=TSplashForm.Create(nil);
    SplashForm.Show;
    SplashForm.Repaint;
    Application.Initialize;
    Application.Title := 'Главное окно';
    Application.CreateForm(TMainForm, MainForm);
    Application.CreateForm(TDataModule1, DataModule1);
    Application.CreateForm(TEditRecForm, EditRecForm);
    Application.CreateForm(TFormParametr, FormParametr);
    Sleep(1000);
    SplashForm.Close;
    Application.Run;
    end;
    end.

    То есть, если приложение уже запущено, но сидит в трее, то окно просто активизируется. И вот в чём проблема, второй раз правый клик уже не работает. Окно не скрывается. Подскажите где собака зарыта?
    Отправлен: 24.11.2008, 19:58
    Вопрос задал: Maximus777 (статус: Посетитель)
    Всего ответов: 2
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Drbear
    Здравствуйте, Maximus777!
    Попробуйте после активизации приложения воткнуть такую функцию указав в качестве входного параметра MainForm

    Приложение:

    Ответ отправил: Drbear (статус: Студент)
    Ответ отправлен: 24.11.2008, 20:57

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 236590 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: monah
    Здравствуйте, Maximus777!
    В строке Cloce добавте указатель на себя Self.close;
    А еще лучше воспользуйтесь API функцией
    ShowWindow(application.handle, sw_hide); // прячет приложение
    ShowWindow(Self.handle, sw_hide); // прячет форму
    также попробуйте application.minimize;

    Приложение:

    ---------
    festina lente

    Ответ отправил: monah (статус: Практикант)
    Ответ отправлен: 24.11.2008, 21:38

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 236593 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 151.701
    Здравствуйте!
    У меня проблема: мне необходимо сделать программу, которая будет вращать квадрат. У меня не получается это сделать, т.е. частично я это сделал - у меня получается вращение какой-то другой фигуры, но как превратить ее в квадрат я не знаю. Причем, можно, чтобы она вращалась не вокруг своей оси, а так, как она сейчас вращается (увидите, когда запустите программу) - главное, чтобы это был квадрат, а не тот 4-угольник, который у меня там получился.
    Люди, помогите, пожалуйста, сделать так, чтобы вместо моей получившейся фигуры вращался квадрат?
    Язык программирования: Delphi 7.
    Программа в приложении. На форме располагается таймер и Image. Также я использую модуль, код которого будет приведен в приложении после кода проги. Еще Вам понадобится пустой файл *.bmp, который применяется для очистки Image от следов фигуры при вращении.
    Я УЖАСНО ИЗМУЧИЛСЯ.
    ОГРОМНОЕ СПАСИБО!!!
    УМОЛЯЮ, ПОСМОТРИТЕ ПРОГРАММУ, ПОЖАЛУЙТСТА!!

    Приложение:

    Отправлен: 24.11.2008, 20:17
    Вопрос задал: AkaProc (статус: 4-й класс)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Genia007
    Здравствуйте, AkaProc!
    Вместо Вашей программы могу предложить свою, которая намного проще, на форме таймер и PaintBox,
    код в приложении, а весь проект по адресу: http://jonix.ucoz.ru/proejct/kvadrat.rar

    Приложение:

    ---------
    Помогли тебе, помоги и ты.

    Ответ отправил: Genia007 (статус: Студент)
    Ответ отправлен: 26.11.2008, 20:25

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 236807 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5
    Комментарий оценки:
    Спасибо!


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить вопрос экспертам этой рассылки

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2008, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.12 от 19.11.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное