Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« : 07-08-2009 10:23 » |
|
система довольно утрированная, поскольку это программа, написанная по заказу для курсового.
Собственно, просьба - потыкаться и потестировать программу на наличие глюков, поскольку среда разработки C# для меня совсем новая. Экзешник тут, а исходники прикреплю сегодня или завтра (пишу комментарии), тогда потом это всё можно будет переместить в авторское ПО
Про работу интерфейса намеренно ничего не говорю - так как это тоже тест его - на понятность. (На удобство интерфейса же не претендую ))) Самому многое не нравится)
|
|
« Последнее редактирование: 07-08-2009 14:47 от Алексей1153++ »
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #1 : 07-08-2009 14:05 » |
|
При попытке создать БД:
---------------------------
--------------------------- Could not load file or assembly 'Interop.ADOX, Version=2.8.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified. --------------------------- OK ---------------------------
Посмотри в сторону наличия adodb.dll при exe-файле. Хотя может он должен называться Interop.ADOX.dll
|
|
« Последнее редактирование: 07-08-2009 14:14 от Dimka »
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #2 : 07-08-2009 14:53 » |
|
намёк понял ) Прикладываю и проект, и папку Release
|
|
« Последнее редактирование: 07-08-2009 14:59 от Алексей1153++ »
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #3 : 07-08-2009 15:19 » |
|
Что-то как-то убого интерфейс построен - вообще не продуманы типовые операции.
В бухгалтерии номер работника есть, и справочник работников - вообще не понятно, к чему они. Поиск по юзерам при пустой строке ничего не показывает, а хорошо бы либо "все", либо хоть "первую тысячу".
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #4 : 07-08-2009 15:42 » |
|
вообще не продуманы типовые операции.
какие ? Если бы я знал эти типовые операции ) В бухгалтерии номер работника есть,
по идее, в бухгалтерии номер работника - для отметки о выдачи зарплаты. То есть не во всех записях этот ID используется. Выдача зп не реализована. Если будет руководителем студента велено, то надо будет проверку дат организовать справочник работников
собственно, список работников , почему бы и не быть ему ? Поиск по юзерам при пустой строке ничего не показывает
вообще то, я так и задумал. А почему должно быть иначе ? Ведь диалог поиска клиента предполагает сначала ввод информации для поиска, потом только выбор клиента. Большинство клиентов могут помнить свой номер (либо у них будет с собой карточка с индивидуальным ID, чтоб не запоминать) Ещё не нашёл, как отфильтровывать вводимые в текстовое окошко символы для ввода, скажем, чисел - символы "минус", "запятая" или "точка", 0...9 Только наследовать и переделывать там ?
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #5 : 07-08-2009 19:50 » |
|
какие ? Если бы я знал эти типовые операции ) Откуда я знаю? Я по названиям кнопок смотрю. Ещё не нашёл, как отфильтровывать вводимые в текстовое окошко символы для ввода, скажем, чисел - символы "минус", "запятая" или "точка", 0...9
Вешаешь обработчик на TextChanged и проверяешь регулярными выражениями. Если надо, поправляешь - удаляешь непотребное. Только при этом опять возникнет событие TextChanged - смотри в оба, чтобы в бесконечную рекурсию не вылететь.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #6 : 08-08-2009 06:01 » |
|
насчёт бесконечной - ну я обычно в таких случаях делаю что то вроде if(control.text!=newText) { control.text=newText; } но это всё крайне неудобно, потому что приходится следить за положением курсора попробовал такое регвыражение для числа с плавающей точкой? 1) плюс или минус (или пусто) 2) десятичные цифры (или пусто) 3) точка или запятая (или пусто) 4) десятичные цифры (или пусто) @"[\+\-]{0,1}\d+[\,\.]{0,1}\d+" только что то не так, потому что с точкой то проблемы и начинаются. Тестовые строки такие "+" "-" "" "+11" "-11" "11" "+." "-." "." "+11." "-11." "11." "+," "-," "," "+11," "-11," "11," "+22" "-22" "22" "+1122" "-1122" "1122" "+.22" "-.22" ".22" "+11.22" "-11.22" "11.22" "+,22" "-,22" ",22" "+11,22" "-11,22" "11,22"
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #7 : 08-08-2009 10:14 » |
|
Алексей1153++, какое ещё положение курсора? На каждое событие проверяешь весь текст целиком. Я такое делал для текстов в несколько Кб - не тормозит. Давай составлять регулярное выражение. 1) Если тебе надо, чтобы в строке содержалось только то, что нужно, то сразу пишем конец и начало строки ^$ 2) Внутри должны содержаться 1 или более цифр, значит ^\d+$ 3) Цифры могут предваряться знаком, а могут и не предворяться. Знаки могут быть либо "+", либо "-". Значит ^[\+-]?\d+$ 4) После цифр может находиться, а может и не находиться дробная часть - некая сложная конструкция, значит нужна группа ^[\+-]?\d+()?$ 5) Дробная часть начинается с разделителя - либо ".", либо ",", и потом следуют одна или более цифр. Значит ^[\+-]?\d+([\.,]\d+)?$ Ну а теперь чуть преобразовать к .NET-формату.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #8 : 08-08-2009 10:34 » |
|
Dimka, Только поправка. Если ты используеш точку как разделитель дробной части, то тогда запятая может использоваться как разделитель тысяч. Отсюда следует, что запись 32,569.58 вполне законна. Лучше наверно поднять системные параметры и динамически формировать регулярку.
|
|
« Последнее редактирование: 08-08-2009 10:37 от Finch »
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #9 : 08-08-2009 14:31 » |
|
Finch, это ж американский формат. А по задаче обрабатывается строка ввода пользователя в русской программе без всяких локализаций и хитростей. Я думаю, юзер перебьётся без разделителей тысяч Тем более, что суммы там небольшие.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #10 : 08-08-2009 15:02 » |
|
Dimka, Если только Российская локализация, тогда нужно исключить точку в применении .
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #11 : 09-08-2009 06:39 » |
|
Димка, положение курсора: это я не просто так говорю, курсор прыгает при корректировке текста. Надо запомнить, где курсор был до правки, поменять текст, потом вернуть курсор по логике на место за пример регвыражения пасиба, буду разбираться
думаю, мне нужно без ^$
[\+-]?\d+([\.,]\d+)? - это работает до строки "+.22" , на которой выдаёт "22" ( как-то надо учесть, что первый \d+ может быть и пустым
Финч, разделитель тысяч - не надо ) Я полагаю точку и запятую одним и тем же (кстати, можно ещё и "ю", "б" и прочие опечатки в качестве разделителя взять и подменить на запятую)
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #12 : 09-08-2009 08:03 » |
|
собственно, осенило [\+-]?(\d+)([\.,]\d+)? - работает как надо
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #13 : 09-08-2009 11:29 » |
|
Димка, положение курсора: это я не просто так говорю, курсор прыгает при корректировке текста. Надо запомнить, где курсор был до правки, поменять текст, потом вернуть курсор по логике на место А куда он прыгает? Почему у меня не прыгает, хотя я его не запоминаю и не выставляю его позицию? Курсор управляется полями вроде как SelectedPosition и SelectedLength или как-то так - это текущий выделенный блок (можно 0 размера). [\+-]?\d+([\.,]\d+)? - это работает до строки "+.22" , на которой выдаёт "22" ( как-то надо учесть, что первый \d+ может быть и пустым У меня написано выражение, которое не допускает отсутствия чисел до разделителя. А поскольку ты не задал начало строки, то знаки "+." игнорируются - подходящим определяется только подстрока "22". [\+-]?(\d+)([\.,]\d+)?
- работает как надо [\+-]?\d*([\.,]\d+)?
Но такая схема приведёт к выбору отдельных знаков вовсе без цифр.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #14 : 09-08-2009 13:13 » |
|
ну так с плюсиком вместо * нормально работает
|
|
|
Записан
|
|
|
|
|