Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi

Автор: SergeyReutov
Дата сообщения: 05.05.2005 16:11
Кто-нибудь сталкивался с такой проблемой? :

Когда создаешь базу данных на Access-е, то там у чисел типа Real целая часть от дробной отделяется запятой, а в Delphi целая часть от дробной отделяется точкой.
Поэтому при попытке доступа из Delphi к числам базы данных Access-а возникает ошибка.
Как можно решить эту проблему?
Автор: OdesitVadim
Дата сообщения: 05.05.2005 16:38
SergeyReutov

Цитата:
Delphi целая часть от дробной отделяется точкой

Всё зависит от функций, которыми пользуешся. val всегда даст точку в строковом представлении, а Floattostr в зависимости от установок Винды(Узнать можно в переменной DecimalSeparator). Access пользуется настройками винды.
Так как для перевода чисел скорее всего используется Strtofloat, то думаю, что ошибок быть не может. Вариант возникновения ошибок -в строковой записи есть лишний пробел.
Уточни, в какой именно конструкции появляется ошибка
Автор: djelektronik
Дата сообщения: 05.05.2005 17:14
как получить параметры передаваемые при запуске проги
типа -a 1 -b 2

нашел че надо но там не описано как с конкретными цифрами
типа когда задаеш порт или ип адрес или еще че

вот пример
http://www.delphibasics.co.uk/RTL.asp?Name=FindCmdLineSwitch
Автор: OdesitVadim
Дата сообщения: 05.05.2005 17:35
djelektronik
а не проще ручками?
Количество параметров ParamCount
Достучаться к конкретному параметру - Paramstr(номер).
Приятная фича Paramstr(0) возвратит имя exe с полным путём
Автор: mr_eoi
Дата сообщения: 05.05.2005 22:07
OdesitVadim
Функции ParamCount и ParamStr(номер) накладывают определённые требования на синтаксис командной строки, к примеру, если написать -a-b, встроенный парсер определит, что это один параметр,
а писать -a -b всех не заставишь.
Автор: ShIvADeSt
Дата сообщения: 06.05.2005 01:25
Ну тады ручками получаем всю командную строку, через ParamStr(0) потом режем из нее Application.ExeName с самого начала и начинаем парсить ручками.
Автор: evle
Дата сообщения: 06.05.2005 03:39
mr_eoi
04:07 06-05-2005
Цитата:
а писать -a -b всех не заставишь.

Лучше заставлять, а то привыкнут, что так можно, а это неверно.
Автор: FAngel
Дата сообщения: 06.05.2005 05:35
ShIvADeSt
ParamStr(0) вернет только полное имя ехешника, а вся командная строка будет
ченить типа for i:=1 to ParamCount do PrmStr:=PrmStr+ParamStr(i);
Автор: mr_eoi
Дата сообщения: 06.05.2005 06:48
evle
04:39 06-05-2005
Цитата:
Лучше заставлять, а то привыкнут, что так можно, а это неверно.

Очень многие программы разрешают не разделять флаги в командной строке пробелами, поэтому, IMHO, для сохранения общности, следует предусмотреть и такую возможность, тем более, что командная строка всегда доступна через функцию API GetCommandLine.
Автор: evle
Дата сообщения: 06.05.2005 07:10
mr_eoi
12:48 06-05-2005
Цитата:
Очень многие программы разрешают не разделять флаги в командной строке

Ни одной не встречал. Да и неправильно это.
Автор: SergeyReutov
Дата сообщения: 06.05.2005 07:31
OdesitVadim

Цитата:
Уточни, в какой именно конструкции появляется ошибка


Ошибка возникает при попытке записи числа в базу данных.
Т.к. в базе данных Access целая часть от дробной разделяется запятой, а в Delphi точкой, поэтому Access-ная база требует именно запятую в числе.
Автор: OdesitVadim
Дата сообщения: 06.05.2005 09:56
SergeyReutov
Ну пишу, что в Делфи целая часть от дробной отделяется тем, чем укажеш (тоесть какая функция + национальные настройки).

Цитата:
при попытке записи

как идёт запись? Если через SQL запрос, то всё понятно - форматируй корректно строку.
Автор: SergeyReutov
Дата сообщения: 06.05.2005 11:05
OdesitVadim

А где можно посмотреть переменную DecimalSeparator ?
Автор: OdesitVadim
Дата сообщения: 06.05.2005 11:08
SergeyReutov
можно в начтройках винды, а можно так

Код:
ShowMessage(DecimalSeparator);
Автор: abv
Дата сообщения: 06.05.2005 11:11
SergeyReutov
Все переменные региональных настроек находятся в SysUtils.
Как я понял, тебе нужно сделать что-то вроде:

OldDecSeparator := DecimalSeparator;
DecimalSeparator := ',';
try
// наполняем базу Access
finally
DecimalSeparator := OldDecSeparator;
end;
Автор: ViktorSila
Дата сообщения: 06.05.2005 11:51
evle

Цитата:
События - это свойства типа TNotifyEvent. Подробности проще всего понять, почитав исходники VCL.

А где их взять??????
Автор: YurikGL
Дата сообщения: 06.05.2005 11:53
>А где их взять??????

Набираешь то, чей исходник тебе нужен в редакторе, нажимаешь ctrl + click на набранное слово...
Автор: OdesitVadim
Дата сообщения: 06.05.2005 11:59
ViktorSila
либо нажимаеш Ctrl и мышей щёлкаеш по нужных словах
Автор: Aliber
Дата сообщения: 06.05.2005 16:29
Привет. Подскажите пожалуйста как изменить размер фото (точнее подогнать под нужный размер сохраняя пропорции) в TImage. Я только учусь и немного запутался - с каждым разом меняется сам размер TImage, а фото нет. Далее эта фотка будет с данными записываться в БД и в дальнейшем отображаться в DBImage. Заранее благодарю за помощь.
Автор: OdesitVadim
Дата сообщения: 06.05.2005 16:51
stretch:=true;// чтобы растягнуть
Proportional:=true;//Чтобы пропорционально
center:=true;// чтобы поцентру
Автор: Felix
Дата сообщения: 07.05.2005 11:59
mr_eoi

Цитата:
Очень многие программы разрешают не разделять флаги в командной строке пробелами

Правильно evle заметил, что надо учить как надо, а не как удобно. Кстати, на память не приходят программы, которые неразделённые параметры переваривают.

З.Ы. Твоих бы юзверей под Юникс....
Автор: Skipper
Дата сообщения: 09.05.2005 07:14
Подскажите, пожалуйста, как можно отследить добавление файлов в определённой папке и всё это (имена файлов) добавить, например в Listbox?
Автор: YurikGL
Дата сообщения: 09.05.2005 07:22
>Подскажите, пожалуйста, как можно отследить добавление файлов в определённой
>папке и всё это (имена файлов) добавить, например в Listbox?

Запоминать, что было и сравнивать с тем, что стало...
Автор: Skipper
Дата сообщения: 09.05.2005 07:30
YurikGL

А если папка пуста?
Автор: evle
Дата сообщения: 09.05.2005 07:36
Skipper
ShellChangeNotifier в Delphi 7 (вкладка Samples)

Добавлено:
YurikGL
Средствами ОС все же лучше, чем сравнением: ресурсов меньше расходуется.

Автор: Skipper
Дата сообщения: 10.05.2005 01:22
evle


Цитата:
ShellChangeNotifier в Delphi 7 (вкладка Samples)


Не идёт. Он не может добавлять созданные файлы в listbox. Он только реагирует на это
Автор: mr_eoi
Дата сообщения: 10.05.2005 06:00
Skipper
08:14 09-05-2005
Цитата:
Подскажите, пожалуйста, как можно отследить добавление файлов в определённой папке и всё это (имена файлов) добавить, например в Listbox?

Нужно использовать интерфейс ICopyHook (ShlObj)
подробнее смотри здесь: http://ariu.berdyansk.net/~pvz/keys/mskik/keys2.html
P.S. Sorry ICopyHook работает только для папок.
Автор: Aliber
Дата сообщения: 10.05.2005 08:21
Спасибо за ответ, но дело в том что это я могу применить к TImage, а в DBImage свойство "proportional" не доступно, причем в TImage меняется только отображение, а сам размер остается прежним.
Автор: OdesitVadim
Дата сообщения: 10.05.2005 11:24
Aliber
А что нужно? Ты хочеш эту картинку потом кудато сохранить? Тогда нужно использовать функции рисования по канве. Например StretchDraw.
Автор: Larry Laffer
Дата сообщения: 10.05.2005 16:35
Подскажите, как средствами Delphi можно отключить SFC?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Вероятность одинакового CRC32


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.