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

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

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

ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Dimoniusis



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
hukker число не является числом с плавающей точкой.  
 
Скорее всего у тебя в Панель управления - Языки и настройка - региональные параметры стоит разделитель целой и дробной части "." - точка. А тут ты запятую используешь - отсюда и ошибка.
 
В Дельфи можно переопределить при желании разделитель (но иногда бажит это), либо заменять в строках его на правильный. Узнать/сменить текущий глобальная переменная: DecimalSeparator (см так же SysUtils.pas)
 
Aladdinych EnumWindows и EnumChildWindows

Всего записей: 4134 | Зарегистр. 18-10-2005 | Отправлено: 22:38 16-10-2008 | Исправлено: Dimoniusis, 22:40 16-10-2008
Coltrain

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

Цитата:
Что за ошибка - '0,87' is not a valid floating point value

В каком случае она возникает? Если при преобразовании string в float-подобные типы, то в качестве разделителя десятичной части должна быть точка.
Если не хочешь заморачиваться с разделителями десятичной части - используй для преобразования функцию Val

Всего записей: 160 | Зарегистр. 31-07-2002 | Отправлено: 22:40 16-10-2008 | Исправлено: Coltrain, 22:45 16-10-2008
DmitryKz

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

Всего записей: 3144 | Зарегистр. 29-09-2005 | Отправлено: 10:46 17-10-2008
ZalivkoDenis



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DmitryKz
EurekaLog - очень даже может помочь . Пока я её не знал - проблем не было. Ну, вылетает иногда прога - да и хрен с ней. А вот когда поставил первый раз -- много нового о своих "неправильных" кодах узнал. Советую

Всего записей: 537 | Зарегистр. 06-10-2005 | Отправлено: 12:27 17-10-2008
DmitryKz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZalivkoDenis
Спасибо
2All
Подскажите, где взять код кодера и декодера для хэш-функции crc32. Желательно, чтобы очень быстро работал. Даже, аще возможно, два варианта - на ассемблере и Дельфи.

Всего записей: 3144 | Зарегистр. 29-09-2005 | Отправлено: 12:57 17-10-2008 | Исправлено: DmitryKz, 13:02 17-10-2008
Dimoniusis



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DmitryKz декодера для crc32 не существует - это одностороннее преобразование, как и любая хеш функция (crc, md5, sha1 и тд).
 
Кодер взять можно например тут: http://www.szutils.net/Delphi/Delphi.php (Ctrl+F -> crc32)
 
В части случаев можно подобрать что-то, что имеет хеш как у тебя... Но не факт, что это будет тоже самое, что и было захешировано.

Всего записей: 4134 | Зарегистр. 18-10-2005 | Отправлено: 14:26 17-10-2008 | Исправлено: Dimoniusis, 14:27 17-10-2008
DmitryKz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, подскажите, как убрать полосы прокрутки в приложении MDI, когда дочерняя форма заходит за границы клиентской области главной формы. А, может, лучше, чтобы дочерняя форма не могла выйти за границы клиентской области. Дельфи 7.

Всего записей: 3144 | Зарегистр. 29-09-2005 | Отправлено: 19:44 17-10-2008
iddqd2



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DmitryKz
Могу предположить, что это может случиться либо при непродуманном проектирвоании дочерней формы, что мы с негодованием отметаем, либо при изменении размеров главного окна. В этом случае можно не давать изменять размеры главного окна меньше некоего предела.

Всего записей: 14 | Зарегистр. 26-10-2006 | Отправлено: 21:42 17-10-2008
Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DmitryKz, немного корявое решение:

Код:
  private
    procedure WMWindowPosChanging(var Msg: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING;
 
...
 
procedure TChildForm.WMWindowPosChanging(var Msg: TWMWindowPosChanging);
var
  WorkArea: TRect;
  StickAt : Word;
begin
  StickAt := 10;
  WorkArea := ParentForm.ClientRect;
  with WorkArea, Msg.WindowPos^ do
    begin
      Right:=Right-cx;
      Bottom:=Bottom-cy;
      if (abs(Left - x) <= StickAt) or (x < Left) then x := Left;
      if (abs(Right - x) <= StickAt) or (x > Right) then x := Right - 4;
      if (abs(Top - y) <= StickAt) or (y < Top) then y := Top;
      if (abs(Bottom - y) <= StickAt) or (y > Bottom) then y := Bottom - 4;
    end;
  inherited;
end;
 

 
ParentForm.ClientRect, как я понял, захватывает также и бордюр формы, поэтому пришлось добавить - 4, возможно, придется подогнать под определенный стиль формы

----------
www.MyFirstSite.ru - информационный ресурс для начинающих веб-мастеров

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 16:08 18-10-2008
DmitryKz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iddqd2
Ну не надо так уж сразу отвергать все возможности
Создаю новый проект, две формы, в одной свойство fmMDIForm, в другой - fmMDIChild. Запускаю - попробуйте подвигать дочернюю форму в разные стороны? Теперь запускаю какой-нибудь Фотошоп, открываю фотку, двигаю ее в разные стороны - скролов нет. Как в Дельфи убедиться в неправильно проектировании дочерней формы???

Всего записей: 3144 | Зарегистр. 29-09-2005 | Отправлено: 23:24 18-10-2008
hukker



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

Цитата:
Dimoniusis

Точно, сработало! все как ты сказал. Благодарю! Что интересно, сразу после установки Delphi при запуске проекта в первый раз все считается, а при втором запуске проекта уже ошибочка.) Одна проблемка, для Лиры 9.0 разделителем является точка. Придется переключатся каждый раз.(

Всего записей: 883 | Зарегистр. 05-09-2007 | Отправлено: 00:33 19-10-2008
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
hukker
Перед переводом строки в число сделай след преобразование
if Pos(',',MyFloat)>0 then MyFloat[Pos(',',MyFloat)]:='.'; // MyFloat - переменная которую преобразовываем
А еще лучше какую нить функцию написать, которая это будет делать.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 06:17 19-10-2008
Jokerjar79



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

Код:
  DecimalSeparator := '.';
  f := StrToFloat('11.11');
  DecimalSeparator := ',';


----------
www.MyFirstSite.ru - информационный ресурс для начинающих веб-мастеров

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 06:35 19-10-2008
DmitryKz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Удалил, сорри, проблему по компоненту решил.
Jokerjar79
Спасибо за код, но я нашел изящное решение (в смысле, нашел, код)))))), а не решение). Все работает замечательно.
Подробнее...

Всего записей: 3144 | Зарегистр. 29-09-2005 | Отправлено: 22:28 19-10-2008 | Исправлено: DmitryKz, 23:17 19-10-2008
Dimoniusis



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

Код:
 
function MyFloat(Str: AnsiString): Extended;
beging
  Str:=StringReplace(Str, '.', DecimalSeparator, [rfReplaceAll]);
  Str:=StringReplace(Str, ',', DecimalSeparator, [rfReplaceAll]);
  Result:=StrToFloat(Str);
end;

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

Код:
var f: Real;
 
f:=MyFloat('22.2');
f:=f+MyFloat('0,8');
 

Всего записей: 4134 | Зарегистр. 18-10-2005 | Отправлено: 15:23 20-10-2008 | Исправлено: Dimoniusis, 15:24 20-10-2008
Maks150988



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

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 21:14 20-10-2008
Tantos



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
Регионы (можно вырезать окошки и кнопки по рисунку). Если программа будет работать под Windows XP и выше - манифесты.

Всего записей: 1038 | Зарегистр. 31-05-2005 | Отправлено: 03:28 21-10-2008
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
Поищи исходники библиотеки 1stClass, там можно подсмотреть пример работы с регионами.

----------
... не это главное ...

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 12:01 21-10-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На инди ошибка, не знаю почему описываю ситуацию:

Код:
 
procedure TIdTCPConnection.SetIOHandler(AValue: TIdIOHandler); авалуе=nil
begin
  if AValue <> FIOHandler then begin
    if Assigned(AValue) and Assigned(AValue.Intercept) and Assigned(FIntercept) then begin
-----------------------------------------------------^ а вот сдесь наступает крах, хотя по идее не должно
      EIdException.IfTrue(AValue.Intercept <> FIntercept, RSInterceptIsDifferent);
    end;
    if ManagedIOHandler and Assigned(FIOHandler) then begin
      FreeAndNil(FIOHandler);
    end;
 

 
Всё отсылается сообщение уходит, а вчём дело незнаю D7 а инди 10, и проверить не знаю как.
Проблема пока с инди, действительно, не знаю как так.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 16:40 21-10-2008 | Исправлено: delover, 07:44 22-10-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Похоже дело в аттаче, с аттачем уходит нормально, а без аттача, там надо посмотреть, подробностей ещё не знаю.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 15:21 22-10-2008 | Исправлено: delover, 08:52 23-10-2008
   

Страницы: 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 (все версии) - часть 4
ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru