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

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



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

    ----------
    мой маленький блог
    Создание on-line игр

    Всего записей: 382 | Зарегистр. 21-06-2005 | Отправлено: 07:09 10-12-2009
    greenpc

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    delover
    посмотри на EurekaLog. может поможет.
    имхо сам разработчик должен ловить свои баги.
    Delta RuBoard

    Цитата:
    только почему то не хочет отправлять сообщение ни по Ентер, ни по Контрол+Ентер

    и зачем этим хвастаться
    1. ошибка в 17 строке
    2. _http://www.bugtraq.ru/forum/faq/general/smart-questions.html
    3. попробовать обработать onKeyDown

    Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 09:44 10-12-2009 | Исправлено: greenpc, 11:06 10-12-2009
    Aleksandr N

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    greenpc
    Проверил. Как и следовало предпологать, пример с torry работает так-же - молча вырубает программу.
     
    P.S. По совету модератора вечером вынесу своё собщение в отдельную тему. Ссылку добавлю.

    Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 12:43 10-12-2009
    greenpc

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Aleksandr N
    вот от меня _http://ifolder.ru/15401783

    Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 13:49 10-12-2009
    ZidanCo



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Здравствуйте, начал изучать делфи , но пока совсем не разбираюсь , тут есть идея создать программу, где после нажатия на кнопку будет открываться окно с заранее заданным текстом (и картинками на случай).
    Не подскажите как реализовать? Delphi 7

    Всего записей: 65 | Зарегистр. 02-08-2009 | Отправлено: 17:33 10-12-2009
    MartiN_X

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ZidanCo
    Если просто текст, то на кнопку вешаем MessageBox. А вот если с картинками, то наверное новую форуму надо создавать наверное. Я кстати тоже пока новичек в Делфи.

    Всего записей: 20 | Зарегистр. 16-11-2009 | Отправлено: 17:42 10-12-2009
    ZidanCo



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Ну как бы , вот как я представляю это:
    Есть некоторые категории информации, по нажатию на кнопку один(допустим) - появляется окно с описанием первой категории, причем оно должно быть фиксированным , с прокруткой  вниз, так как теста прилично.
    Это примерно.
    А в идеале:
    Список тем слева, при нажатии на кнопку первой темы , в этом же окне программы, просто правее текстовое поле(одно на все кнопки) , где в зависимости от выбранной темы , будет появляться нужная информация.  
     
    Попробовал MessageBox он позволяет не более 255 символов...

    Всего записей: 65 | Зарегистр. 02-08-2009 | Отправлено: 18:17 10-12-2009
    data man



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ZidanCo
     
    Способов это сделать - масса.
    Как вариант.
    Слева - ряд кнопок (допустим 10), у каждой в свойстве Tag значения от 1 до 10.
    Справа - Memo.
    Для всех этих кнопок один и тот же обработчик события ОнClick с таким кодом:

    Код:
      var
        S: string;
    begin
      case (Sender as TButton).Tag of
        1: S := 'Это текст 1-ой темы';
      ... // тут аналогично
        10: S := 'Это текст 10-ой темы';
      else
        S := 'Упс ! ';
      end;
      Memo.Text := S;
    end;

    А дальше можно развивать. К примеру считывать текст тем из файла.
    upd: case Sender.Tag of - Была моя ошибка

    ----------
    Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
    Кекс. Антибиотики. Ламбада.

    Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 19:25 10-12-2009 | Исправлено: data man, 21:03 10-12-2009
    delover

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    greenpc
    Триальный период EurekaLog закончился. Хотя я переустановил систему, но не уверен что он будет работать. Зарубежные софтврайтеры его побаиваются. Приемуществ перед JCL я особых не успел увидеть. Он опционально не заточен под тупых юзеров как я. Кстати как переводится Эврека? Мне бы "лекарство", чтоб в стандартной поставке. На солько я понимаю, когда умирает процесс - умирает любой мутекс (если не служба). Когда умирает мютекс, любой поток может проснутся, даже самый юзерский. Дале дело возможности попросить систему не вернуть NEW IP в начальное положение.

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 21:11 10-12-2009
    Aleksandr N

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    greenpc
    Вопрос вывел в тему:
    http://forum.ru-board.com/topic.cgi?forum=33&topic=10825
    Пока отвечу здесь.
    По началу всё было более-менее прилично

    Вот только при закрытии выдаёт

    Кстати, на картинке видна и модель принтера, вот только ревизию драйвера сразу не вспомню - принтер рабочий, эксперименты ставлю в рабочие дни.

    Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 18:34 11-12-2009 | Исправлено: Aleksandr N, 18:37 11-12-2009
    ppkp

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Работаю с TStringGrid. Нужно Excel-подобное поведение в части drag'n'drop Selected. Т.е. при положении курсора мыши в углу Selected меняется курсор (но это не главное) и появляется возможность перетащить Selected в другое место(этой же StringGrid). Инет на поиск ничего вразумительного не нашел. Посоветуйте либо компонент, либо идею где и куда рыть. Спасибо.

    Всего записей: 480 | Зарегистр. 13-04-2006 | Отправлено: 19:21 12-12-2009 | Исправлено: ppkp, 22:57 13-12-2009
    psa1974



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем заинтересованным к сведению
    Как многие, вероятно, заметили, топик обзавелся шапкой. Поскольку шапка есть, она должна быть оформлена .
    Здесь находится ПРОЕКТ ШАПКИ
    Обсуждаем оформление, делаем предложения относительно содержания...

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

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 21:30 13-12-2009 | Исправлено: psa1974, 21:31 13-12-2009
    Grande



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Имеется код:

    Код:
     
    var
      RName, RAddr: PChar;
      LCnt, RecipCtr: Integer;
      AddrStr: Char;
      Ft: TextFile;
      Tmp: string;
      RecipNames, RecipAddr: Array of PChar;
    begin
      if FileExists(ExtractFilePath(ParamStr(0)) + 'Recips.txt') then
      begin
        System.AssignFile(Ft, ExtractFilePath(ParamStr(0)) + 'Recips.txt');
        System.Reset(Ft);
        Readln(Ft, Tmp);
        LCnt := StrToInt(Tmp);
        SetLength(RecipNames, LCnt);
        SetLength(RecipAddr, LCnt);
        RecipCtr := LCnt + 1;
        LCnt := 0;
        while not Eof(Ft) do
        begin
          Readln(Ft, Tmp);
          RName := PChar(Trim(Copy(Tmp, 1, Pos('|', Tmp) - 1)));
          RAddr := PChar(Trim(Copy(Tmp, Pos('|', Tmp) + 1, 30)));
          RecipNames[LCnt] := RName;
          RecipAddr[LCnt] := RAddr;
          inc(LCnt);
        end;
        System.CloseFile(Ft);
      end;
     

     
    Так вот: переменные RName и RAddr выглядят вполне прилично, а вот после добавления
    в массив очередной строки у предыдущей строки (уже помещенной в массив) последний символ заменяется на хрен знает что. Что это может быть?

    Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 14:36 15-12-2009 | Исправлено: Grande, 14:37 15-12-2009
    data man



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Grande
     
    Лучше заменить на:

    Код:
    RecipNames, RecipAddr: Array of string;

    и

    Код:
    RName := Trim(Copy(Tmp, 1, Pos('|', Tmp) - 1));  
    RAddr := Trim(Copy(Tmp, Pos('|', Tmp) + 1, 30));

    А то и на:

    Код:
    SL := TStringList.Create;
    SL.NameValueSeparator := '|';
    SL.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Recips.txt');


    ----------
    Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
    Кекс. Антибиотики. Ламбада.

    Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 15:07 15-12-2009
    Grande



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    data man
    Я так и сделал. Но любопытно, все же, почему так происходит...

    Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 15:09 15-12-2009
    V1s1ter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Grande
    Пишу в дороге потому может гдето нетак понял, но помоему проблема тут:
    RName := PChar(Trim(Copy(Tmp, 1, Pos('|', Tmp) - 1)));
    Выделен ВРЕМЕННЫЙ фрагмент памяти и передан указатель на него RName
    RecipNames[LCnt] := RName;
    Сохранили указатель на этот временный фрагмент.
    Гдето менеджер памяти посчитал, то ранее выделенная память не нужна и чегото в нее писанул и естественно потер все RecipNames[i].
    В случае когда RecipNames типа String, то при RecipNames[LCnt] := RName; произойдет копирование из ВРЕМЕННОГО фрагмента в память выделенную под RecipNames[LCnt].
    Вроде так.
     

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 16:07 15-12-2009
    Grande



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

    Цитата:
    потер все RecipNames[i]

    Не совсем так: RecipNames[i] остается на месте, только в конце строки появляется мусор.

    Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 16:12 15-12-2009
    V1s1ter



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

    Цитата:
    Не совсем так: RecipNames[i] остается на месте, только в конце строки появляется мусор.

    Что перезаписывается и как зависит от распределения памяти, возможно что временные выделенные участки и не понадобятся до окончания работы программы и создается июзия корректно написаной программы. Видимо в Вашем случае понадобился участок памяти который пересекался с выделенным временным фрагментом всего одним символом. Повлиять на распределения можно просто, например обявите локальную переменную типа String[200] вызови пару функций по по обработке этой строки между вызовами  
          RAddr := PChar(Trim(Copy(Tmp, Pos('|', Tmp) + 1, 30)));
    --->
          RecipNames[LCnt] := RName;
    и ВОЗМОЖНО RecipNames[i] будет вести себя уже по другому.  
    Вообщето мой ответ касался работы с указателями:
    Функция Trim() выделяет фрагмент памяти в стеке вызова процедур и возвращает указатель на этот фрагмент, а стек постоянно меняется.

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 16:55 15-12-2009
    nickjust



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть мысля ...Нужен программер ,который бы написал
    Есть куча солюх ,разного качества,которые по сто раз качаем перекачиваем..
    пора унифицировать..
    Берем хорошего качества фотку мобилы в формате PSD (многослойная картинка в формате PhotoShop) - это будет 1 слой ..
    Потом все солюхи ,легко и просто добавляем в фотошопе - слоями
    Например солюха "Нет звука полифонии" - слой номер 2
    Нужна утилита,которая бы открывала PSD файл в отдельном окне,и выводила 1 слой в окне,потом автоматически считывала количество слоев и по бокам рисовала кнопки с названиями,(названия брать из ini файла который лежит рядом с файлом Psd - типа Nokia3310.psd и Nokia3310.ini)
    Нажимаем кнопу "Нет звука полифонии" и на основной слой накладывается 2 слой..
     
     
    ИТОГ - 1 утилита которая выводит на экран солюхи и 1 картинка в формате PSD + 1 файл для кнопок INI - для 1 тела!
    __________________

    Всего записей: 100 | Зарегистр. 17-04-2003 | Отправлено: 17:45 15-12-2009
    Hiken



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    nickjust
    Можно перевести на человеческий язык? Что за солюхи и причем тут Delphi? Конечно понимаю, программазм накладывает отпечаток, да и заработаться каждый может, но все же - постарайтесь.

    Всего записей: 1343 | Зарегистр. 14-01-2006 | Отправлено: 18:00 15-12-2009
       

    Страницы: 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