Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 5

Модерирует : ShIvADeSt

ShIvADeSt (19-05-2010 05:14): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=11215  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы Вопросы по Delphi (до версии 2009) - часть 4

Познаем сами, помогаем другим...
Обсуждаем вопросы, не связанные с юникоидными версиями Delphi - для этого есть соответствующая тема (см. ссылки ниже).

Правила топика:
    Прежде чем спрашивать:
  1. Желательно изучить вопрос, попытаться найти ответ в прилагаемых мануалах, хелпах и анализируя исходники.
  2. Выполнить поиск по топику (открыть "Версия для печати" и поискать ответ там).
  3. Применить фильтр по разделу "Прикладное программирование". Ответы на многие старые вопросы могли быть даны в отдельных темах.
  4. Продумайте вопрос. На поверхностные вопросы вы получите поверхностные ответы, или вообще ответов не получите.
  5. Желательно указывать версии используемого компилятора и операционной системы.
    Прежде чем отвечать:
  1. Если не можете помочь, не мешайте.
  2. Если уж вы отвечаете на вопрос, давайте ответ по сути.
  3. Если вы не уверены, так и говорите! Ошибочный, но авторитетно звучащий ответ хуже, чем отсутствие ответа.
  4. Задавайте дополнительные вопросы, чтобы получить больше информации.
  • Отсутствие ответа не равносильно игнорированию - иногда участники форума просто не знают ответ. Повторная посылка вопроса не приветствуется. Посты типа "неужели никто не знает ответа..." или "может мне все-таки кто-нибудь ответит" недопустимы.  
  • Все большие куски кода (более 5 строк) оформляем в тег [morе] дабы уменьшить размер поста. FAQ по тегу [morе].

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:09 28-06-2009 | Исправлено: psa1974, 12:00 02-02-2010
    zakov



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Я так и не получил ответ чем же это плохо? Зачем это делать если дырки в последовательности айдишек и так будут? Или же можно отказаться от инкрементов и писать свой велосипед.

     
    Рассмотрим такую ситуёвину...
    Надо будет например работать не в онлайн режиме (без постоянной связи с сервером), откуда тогда брать айдишки???

    Всего записей: 163 | Зарегистр. 24-01-2008 | Отправлено: 01:23 21-02-2010
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    zakov
    Айди это суррогатный локальный ключ уникальный в пределах одной базы данных. На него не должна завязываться никакая логика, он должен обеспечивать только целостность базы данных. Если нужно реплицировать данные между двумя базами, то нужно ввести еще один ключ GUID, который является глобальным уникальным ключом.

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 14:20 21-02-2010
    V1s1ter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    zakov
    В дополнение к сказаному volser.
    Если при установке программы на клиенскую машину можно задать ей уникальный номер, то етот номер можно использовать как часть составного ключа.
    Пример, у Вас 50 рабочих мест в разных частях страны на которых формируются заказы, тогда ключ заказа имеет вид <Номер рабочего места><Номер заказа>.  
    Где в поле <Номер рабочего места> числа от 1 до 50, а в <Номер заказа> от 1 до ..., причем для каждого рабочего места нумерация поля <Номер заказа> начинается с 1.
    Такой подход прекрасно работает в оффлайне и прекрасно собираются заказы с рабочих мест вообще не подключенных к инету.

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 15:43 21-02-2010
    zakov



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    volser
    V1s1ter

    спасибо
     
    только я так и не понял, при работе offline откуда айдишки брать, генератор-то не вызовешь уже?..

    Всего записей: 163 | Зарегистр. 24-01-2008 | Отправлено: 16:14 21-02-2010
    V1s1ter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    zakov
    Если решение типа <Номер рабочего места><Номер заказа> подходит, то генератор для <Номер заказа> локальный, то есть у каждого рабочего места свой.

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 16:18 21-02-2010
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    zakov
    Что такое офлайн режим? Какая база используется для этого режима?

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 23:55 21-02-2010
    KurkSS

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите с внешним видом при открытии проекта.
    Я открываю dpr файл и вместо привычныго автооткрытия модулей проекта вижу сам главный файл проекта.....
     
    Тоесть если бы я снуля сам делал весь проект всё было бы ок.
    Но в данном случае я перенёс проект с другого компа и подключил ещо модуль данных,
    который уже сделан был другим человеком.....
    гуглить не получилось... понимаю что ума не зватило правильно поставить вопрос гуглу...
     
    Вопрос: как и где настроить, какие файлы должны окрываться в окне кода при открытии dpr файла???
     
    Добавлено:

     

    Цитата:
    Вопрос: как и где настроить, какие файлы должны окрываться в окне кода при открытии dpr файла???

     
    Магия поста.... сформулировал вопрос, сразу додумался где стоит методом тыко поискать.....  
    Может куму надо и тоже трудно найти будет:
     
    В меню Настройки(Tools) в настройках окружения в preferences есть настройки автосэйва
    ТАм их две штуки
    Дэсктоп проэкта
    редактируемые файлы
     
    второе сохраняет какие файлы должны быть открыты в окне редактора кода
    первое - тоже что и сохраниние десктопа в панели самой делфи.... только сдесь сохранение идёт применительно к проекту.

    Всего записей: 73 | Зарегистр. 22-05-2008 | Отправлено: 13:14 25-02-2010
    VadimLou



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    volser

    Цитата:
    Что такое офлайн режим?

    Отсутствует связь с основной БД.

    Цитата:
    Какая база используется для этого режима?

    RAM

    Всего записей: 702 | Зарегистр. 22-07-2004 | Отправлено: 22:17 25-02-2010
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VadimLou
    И зачем отвечать на вопрос который адресован не вам?

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 11:56 26-02-2010
    ceres578

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте! Не нашел в какую тему написать, но думаю что в эту. Есть задача: написать ActiveX-элемент, который при открытии формы на котором он находится, делал дочерним определенное, заранее открытое окно. Прошу строго не судить - я в Дельфи начинающий. Делаю так: создал ActiveX Form, в событии OnCreate написал:
     
    procedure TActiveFormX.ActiveFormCreate(Sender: TObject);
    var
      hwnd: dword;
    begin
      hwnd:=FindWindow(nil, 'Блокнот');
      Windows.SetParent(hwnd, Handle);
    end;
     
    Окно 'Блокнот' из панели задач пропадает, т.е. как я понимаю ActiveX форма делает захват, но на ней ничего не отображается. Подскажите, что сделать.. Заранее спасибо!

    Всего записей: 32 | Зарегистр. 26-08-2008 | Отправлено: 10:04 27-02-2010
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ceres578
    Отображается, просто форма должна быть размером с экран. Блокнот на ней ведь в тех же координатах располагается, что и на десктопе.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 16:24 27-02-2010
    ceres578

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
    Не выходит. С обычной формой - пожалуйста, делаю, что хочу, но у меня ActiveX-форма - вместо блокнота беру даже маленький калькулятор - результат такой же, из панели задач калькулятор пропадает, а на форме ActiveX его не видно.

    Всего записей: 32 | Зарегистр. 26-08-2008 | Отправлено: 19:28 27-02-2010
    MegoChelovek



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Хлопци, помогите решить две задачи......через день их сдавать надо...в голове мыслей вообще никаких.....
     
    11.    Коля Павликов родился 12.5.62(12 мая 1962г.), поэтому он считает «счастливыми» все даты, у которых сумма цифр дня и месяца рождения равна сумме цифр года рождения, исключая век. Ближайшая предыдущая «счастливая» дата-12.4.62. Ближайшая следующая «счастливая» дата-11.6.62. Требуется помочь Коле. Надо написать программу, которая по заданной произвольной дате определяет ближайшие предыдущую и следующую «счастливые» даты любого века.  
    Найти также «счастливую» дату, у которой в данном веке нет предыдущей, и «счастливую» дату, у которой в данном веке нет следующей. Определить, какая из «счастливых» дат располагается ближе к заданной - предыдущая или следующая. Найти две «счастливые» даты текущего века, которые расположены ближе всего друг к другу.  
    12.    Бизнесмен собрал предсказания М ведущих астрологов об успешности сделок в различные дни месяца. Предсказания оцениваются по пятибалльной шкале:5-успешная сделка, 1-неуспешная. Бизнесмен считает, что сделка действительно будет успешной, если более 75% предсказаний будут равны 4 или 5. Написать программу, определяющую самые благоприятные для бизнесмена дни согласно предсказаниям.
     
    Добавлено:
    и вот такая вот еще, я тут вообще не понимаю что от меня требуеться....может что нить подобное было у кого...
     
    9.    Составить программу, которая имеет 4 формы, в том числе одну главную. Обеспечить переключение с каждой формы на каждую, используя приведенные варианты управления процессом переключения:
    1)    кнопки Button и BitBtn;
    2)    главное меню;
    3)    компоненты ComboBox;
    4)    компоненты RadioButton, размещённые в контейнере (RadioGroup, GroupBox, Panel). На разных формах рекомендуется  использовать разные контейнеры для исследования различных способов использования компонентов RadioButton .
    Обработчики событий для переключения с формы на форму создать частью индивидуальные, частью использовать уже созданные для ранее применённых компонентов.
    Программу выполнить в двух версиях. Первая версия при переходах с формы на форму использует методы Show – Hide. Вторая версия использует создание и  уничтожение форм в требующийся момент. При этом главная форма создаётся при запуске приложения, используя механизм автосоздания (AutoCreate).  

    Всего записей: 33 | Зарегистр. 08-12-2009 | Отправлено: 20:42 28-02-2010
    jonikDk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MegoChelovek
    тебе наверное лучше в форум работа обратиться !!!

    Цитата:
    Хлопци, помогите решить две задачи......через день их сдавать надо...в голове мыслей вообще никаких..

     мысли должны быть следующие: учиться, учиться и еще раз учиться  
    или такие: нахера я поступал  !!!

    Всего записей: 1599 | Зарегистр. 01-03-2004 | Отправлено: 21:44 28-02-2010
    Wahnsinn



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    код неоптимальный, тупо перебор, но пойдет
    это определение счастливой даты в большую сторону

    Код:
     
    var
    dt: tdate;
    str_dt: string;
    pr: boolean;
    begin
    dt:=date;  //начальная дата
    dt:=dt+1; //чтобы не совпала с заданной
    pr:=false;
    while pr=false do
      begin
        try
          str_dt:=FormatDateTime('dd.mm.yyyy',dt);
          if StrToInt(str_dt[1])+StrToInt(str_dt[2])+StrToInt(str_dt[4])+StrToInt(str_dt[5])=StrToInt(str_dt[7])+StrToInt(str_dt[8])+StrToInt(str_dt[9])+StrToInt(str_dt[10]) then
            begin
            pr:=true;
            ShowMessage(str_dt); //вывод строкового значения на экран  
            end
             else dt:=dt+1;
        except
        end;
      end;
    end;
     

    в меньшую сторону - тоже самое но -1.
    По поводу  у которых нет предудыщих и следующих, самые края века разве не удовлетворяют таким условиям?
    По найденным датам - сравнить модули их разности с заданной датой - так можно выяснить какая ближе  к заданной.  
     
     
     
    Добавлено:
    по поводу предсказаний дорабатывай вот это

    Код:
     
    var
    vData: Variant;
    n_day, n_gad, i,j: integer;
    rez: real;
    begin
    n_day:=30; //кол-во дней
    n_gad:=5;  //кол-во гадалок
    SGrid.RowCount:=n_day;
    SGrid.ColCount:=n_gad+2;
    //данные храним в вариантном массиве, визуализируем в TStringGrid
    vData:= VarArrayCreate([1, n_day, 1, n_gad], varVariant);
    //как-то так заполняем рандомно начальные данные
    for i:=1 to n_day do
      begin
        SGrid.Cells[0,i]:= intToStr(i); //
        for j:=1 to n_gad do
          begin
            vData[i,j]:= Random(5);
            SGrid.Cells[j,i]:=vData[i,j];
          end;
      end;
    //обработка
    for i:=1 to n_day do
      begin
        SGrid.Cells[0,i]:= intToStr(i); //
        rez:=0;
        for j:=1 to n_gad do
          begin
            rez:= rez + vData[i,j];
          end;
          if (rez>=(0.75*(4*n_gad))) then SGrid.Cells[n_gad+1,i] :='Ok';
      end;
    end;
     

    Всего записей: 129 | Зарегистр. 20-01-2007 | Отправлено: 01:02 01-03-2010 | Исправлено: Wahnsinn, 01:06 01-03-2010
    MegoChelovek



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    jonikDk
    я понимаю твою обеспокоенность насчет тогда что я вот так вот прошу решения....но мыслей и впраду не было никаких, даже не знал с чего начать. теперь более менее все прояснилось
     
    Wahnsinn
    Спасибо за код, пока его еще не пробовал (еще не дома пока), но уже примерон знаю как делать задачу про астрологов и как правильно оформить форму )
     
    насчет дат, тоже сообразил как делать, только вот есть один вопрос :
    например дана дата 13.7.88. какая их этих дат расположена ближе 13.8.45 или 14.11.99 к 13.7.88 ? как определить это программно ? ( из этого вытекает решение на предпоследний и последний вопрос) ... насчет сравнения модулей не понял маленько, если можешь - выложи код )
     
     
     
    а насчет последней задачи есть какие нить соображения ?

    Всего записей: 33 | Зарегистр. 08-12-2009 | Отправлено: 10:21 01-03-2010
    SIgor33

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите ни кто не использовал в своих приложениях на delphi graphviz для виаулизации графа.
    если есть наработки буду благодарен

    Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 11:14 01-03-2010
    Wahnsinn



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Код:
     
    var
    dt1,dt2,dt:tdatetime;
    begin
     dt:=StrToDate('13.07.1988');
     dt1:=StrToDate('13.08.1945');
     dt2:=StrToDate('14.11.1999');
     
     //заранее знаем каког ознака будет разность, тч просто вычитаем
     if ((dt-dt1)<(dt2-dt)) then ShowMessage(DateToStr(dt1) + ' ближе к '+ DateToStr(dt)+' чем '+DateToStr(dt2))
                            else ShowMessage(DateToStr(dt2) + ' ближе к '+ DateToStr(dt)+' чем '+DateToStr(dt1));
    end;
     

     
    Добавлено:
    а по поводу форм -  
    тут не до конца все ясно из задания, но к примеру
    для первого случая в проект добавляешь еще 3 формы, они у тебя в свойствах проекта будут в разделе автоматически создаваемых (Auto-Create forms).
    Соответственно на все обработчики кнопок, пунктов меню (на onClick), списка комбобокса (onchange) вешаешь соответствующее событие  
    Form2.Show; или Form3.Show; или Form4.Show;
    ну или скрытие  
    Form2.Hide;  и тд....
    в случае второго варианта  в проекте удаляешь формы из автоматически создаваемых
    и пишешь уже что-нить типа

    Код:
     
    Form3 :=TForm3.Create(self);
    Form3.Show;  
     

    при закрытии форм на onClose вызывай  

    Код:
     
    Action := caFree;
     

    Всего записей: 129 | Зарегистр. 20-01-2007 | Отправлено: 11:19 01-03-2010 | Исправлено: Wahnsinn, 11:33 01-03-2010
    V1s1ter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MegoChelovek
    В дополнение к Wahnsinn
    В место  
    if ((dt-dt1)<(dt2-dt)) then  
    Предлагаю
    if Abs(dt-dt1) < Abs(dt2-dt) then  

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 11:55 01-03-2010
    Wahnsinn



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    Найти две «счастливые» даты текущего века, которые расположены ближе всего друг к другу.

    тем же простым перебором и вынесением поиска счастливых дат в функции с ограничением краев на век показал, что для 21 века это следующие даты Подробнее...

    Всего записей: 129 | Зарегистр. 20-01-2007 | Отправлено: 12:47 01-03-2010 | Исправлено: Wahnsinn, 16:46 01-03-2010
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 5
    ShIvADeSt (19-05-2010 05:14): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=11215


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru