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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    VadimLou



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

    Цитата:
    vkDBF индексы

    с индексами не разбирался ... там вроде примеры какие-то были - мож чё по индексам и есть ...
    Я свои фиксы скинул автору ... попробуй у него поспрошать ...
     
    Добавлено:
    Man Without Face

    Цитата:
    все не катит...

    А ты св-во Visible вырубил на своей форме ?
     
    --
    program ...
     
    begin
    ...
    Application.ShowMainForm := False;
    ShowWindow(Application.Handle, SW_HIDE);
    ...CreateForm(...
    ...

    Всего записей: 702 | Зарегистр. 22-07-2004 | Отправлено: 08:55 05-02-2010
    Umbrall



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    извините что ввел в заблуждение
    вот пример проблемы, точки графика и их порядок указаны слева, справа то как он решил нарисовать его
       
    вот процедура которая вносит точки

    Код:
    procedure TForm1.GridPointSetEditText(Sender: TObject; ACol, ARow: Integer;
      const Value: String);
      var i:integer;
    begin
    GridPoint.Cells[0,ARow]:=inttostr(ARow-1);
    if (GridPoint.RowCount=(ARow+1)) then GridPoint.RowCount:=GridPoint.RowCount+1;
    if ARow>Size then Size:=ARow;
    SetLength(X,Size);
    if ((Value<>'-') and (Value<>'') and (Value<>' '))
    then X[ARow-1,ACol]:=strtofloat(Value);
    Series2.Clear;
    Series4.Clear;
    for i:=0 to Size-1 do Series2.AddXY(X[i,1],X[i,2]);
    for i:=0 to Size-1 do Series4.AddXY(X[i,1],X[i,2]);
    end;

    как сделать чтто бы графика рисовался по точкам с правильной последовательностью??

    Всего записей: 168 | Зарегистр. 18-03-2006 | Отправлено: 18:32 06-02-2010 | Исправлено: Umbrall, 18:35 06-02-2010
    snike555



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Umbrall
    А обязательно TChart использовать? Проще в таком случае самому через TCanvas.

    Всего записей: 380 | Зарегистр. 02-10-2009 | Отправлено: 23:47 06-02-2010
    Umbrall



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

    Всего записей: 168 | Зарегистр. 18-03-2006 | Отправлено: 01:35 07-02-2010
    psa1974



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Umbrall
    Для того чтобы точки рисовались в требуемой последовательности укажи для каждой серии перед добавлением точек порядок сортировки по осям:
    Код:
      Series2.XValues.Order:= loNone;
      Series2.YValues.Order:= loNone;

    Ну или в режиме разработки где-то должно быть или свойтсво или мастер редактирования, щас не помню...

    ----------
    У программёра есть два состояния: "Втупляю" и "Попёрло"...

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 07:54 07-02-2010 | Исправлено: psa1974, 08:21 07-02-2010
    Umbrall



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

    Всего записей: 168 | Зарегистр. 18-03-2006 | Отправлено: 13:20 07-02-2010
    itheposter

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите плиз:
     
    Есть строка с текстом: '14:35 3.11.2009'
     
    Нужно перевести её в формат TDateTime сравнить с текущей датой, временем и выдать разницу в минутах.
     
    Не могу никак правильно применить StrToDateTime. Подскажите как правильно перевести исходную строку в TDateTime?
     
     

    Всего записей: 13 | Зарегистр. 07-10-2007 | Отправлено: 14:46 10-02-2010
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    itheposter
    StrToDateTime
    в самом названии п/п указан порядок -- сначала Дата, потом Тайм
    сначала преобразуй своё '14:35 3.11.2009' в '3.11.2009 14:35', потом уже зови StrToDateTime()
    и не забудь про локаль DataSeparator точка или слеш и порядок месяц/число

    Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 15:18 10-02-2010 | Исправлено: akaGM, 15:22 10-02-2010
    greenpc

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

    Код:
     
    const
      sDate ='14:35 3.11.2009';
    var
    mydate, mdelta : tdatetime;
    lHour, lMin, lSec, lMSec: Word;
    begin
      mydate := strtodate(copy(sDate, pos(' ', sDate), length(sDate)))+  
        strtoTime(copy(sDate, 1, pos(' ', sDate)-1));
      mdelta :=Now-mydate;
      DecodeTime(mdelta ,lHour, lMin, lSec, lMSec);
      showmessage( inttostr(Trunc(mdelta)*24*60+lHour*60+lMin));
    end;
     


    Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 16:27 10-02-2010 | Исправлено: greenpc, 16:33 10-02-2010
    Odysseos



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    itheposter
     
    Если локаль русская, а формат даты+времени всегда именно такой (пять символов времени - пробел - дата) - то все просто:
     

    Код:
     
    var
      s_dt: String;
      dt: TDateTime;
    begin
      Readln(s_dt);
     
      dt := StrToDateTime(Copy(s_dt, 7, Length(s_dt) - 6) + ' ' + Copy(s_dt, 1, 5));
     
      Writeln(Trunc(Frac(Now() - dt) * 24 * 60));
    end;
     

     
    Если время не обязательно пять символов - то тогда сначала надо найти положение пробела, и "порезать" строку по нему.
     
    Если же локаль на машине не обязательно русская - то тут уже так запросто не решить. Можно, например, точно выяснить формат входных даты+времени, и потом, перед конверсией StrToDateTime, сохранять используемую Dephi локаль, менять ее на соотвествующую формату даты+времени, а после вызова StrToDateTime - восстанавливать старую. Но для это придётся внимательно почитать справку.

    Всего записей: 186 | Зарегистр. 02-01-2006 | Отправлено: 17:58 10-02-2010 | Исправлено: Odysseos, 18:02 10-02-2010
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    средствами дельфей можно самому динамически выставить нужный формат даты/времени, плюя на локаль, считать, восстановить:

    Код:
    uses SysUtils;
    var
      saveDate, saveTime: string;
    begin
    //сохраняем
      saveDate := ShortDateFormat;
      saveTime := LongTimeFormat;
     
    //выставляем нужный
      ShortDateFormat := 'DD-MM-YYYY';
      LongTimeFormat := 'hh:mm:ss';
     
    {
    // или любой удобный
      ShortDateFormat := 'YYYYMMDD'; // 'DD/MM/YYYY' 'MM/DD/YYYY';;
      LongTimeFormat := 'hhmmss';
    }
     
    //считываем/работаем
    ...
    //
     
    //восстанавливаем
      LongTimeFormat := saveTime;
      ShortDateFormat := saveDate;
    end;

    Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 19:06 10-02-2010 | Исправлено: akaGM, 19:09 10-02-2010
    Odysseos



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
     
    Я и имел в виду Delphi-евую локаль, а не Windows-овую

    Всего записей: 186 | Зарегистр. 02-01-2006 | Отправлено: 21:11 10-02-2010
    akaGM

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

    Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 22:01 10-02-2010
    Odysseos



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
     
    потом, перед конверсией StrToDateTime, сохранять используемую Dephi локаль, менять ее на соотвествующую формату даты+времени, а после вызова StrToDateTime - восстанавливать старую
     
    Вот здесь я как раз и имел в виду под "используемой Delphi локалью" переменные в SysUtils, которые Delphi использует для функций преобразования строк в числа/даты/валюты и обратно.

    Всего записей: 186 | Зарегистр. 02-01-2006 | Отправлено: 00:39 11-02-2010
    greenpc

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

    Цитата:
    Writeln(Trunc(Frac(Now() - dt) * 24 * 60));  

    ошибка!

    Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 08:03 11-02-2010 | Исправлено: greenpc, 08:23 11-02-2010
    Maximus777

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Опытные дельфоманы, подскажите плиз. Как лучше всего реализовать следующий план. Сейчас делаю в TListView, гружу из ini список (два столбца, причём второй можно не показывать), раскрашиваю строчки (данные о цвете строки беру из второго столбца). Но т.к. хз как ListView обновляется, то цвета пляшут как им вздумается. Вобщем как можно удобнее всего загрузить на форму текст, раскрасить его и чтобы можно было легко добавлять или удалять записи, а также сохранять их потом в ini?

    Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 08:58 11-02-2010
    VadimLou



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

    Всего записей: 702 | Зарегистр. 22-07-2004 | Отправлено: 09:51 11-02-2010
    Maximus777

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VadimLou
    Спасибо. Вроде то, что надо. А если в опциях стоит "Выделять всю строку", то редактор не работает, правильно? Мне надо чтоб ячейки были "заморожены" по горизонтали, а скролл только вертикальный был. При выделении всей строки это достигается, но тогда редактор обламывается. Каким образом можно отловить момент когда редактирование ячейки закончено? Тогда всё бы решилось довольно просто.

    Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 11:38 11-02-2010 | Исправлено: Maximus777, 11:56 11-02-2010
    akaGM

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

    Цитата:
    ...я как раз и имел в виду под "используемой Delphi локалью" переменные в SysUtils

     
    SysUtils.ShortDateFormat
    SysUtils.LongTimeFormat
     
    ну так а я о чём?
    короче, что я не так говорю?

    Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 13:07 11-02-2010
    Odysseos



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    greenpc
     
    ошибка!
     
    Где?
     
     
    akaGM
     
    Да все так Я же говорю - я об этом только упомянул, направив вопрошающего читать справку, а Вы тему окончательно раскрыли.

    Всего записей: 186 | Зарегистр. 02-01-2006 | Отправлено: 15:33 11-02-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