![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вопрос по сохранению данных
aha © (2010-10-23 21:42:00)хочу задать вопрос такой , ранее программу по сохранению данных идущих с некоторых дивайсов делал так Ж
перед началом работы дивайса , создавал окно , требующий создание файла процедурой REWRITE(File);
после приема данных ( данные идут периодически максимум раз в секунду ) дописывал в файл таким образом
Append(File);
WRITE(file, параметры дивайса ).
Так не очень правильно наверное
Хочу попробовать таким образом , стартую , при этом независимо от желания будет создаваться текстовый файл , типа буфера. А после завершения работы дивайса , перед закрытием программы будет запрос , хотим ли сохранить данные и в каком формате . и программа открыв буф. текстовый файл перепишет в нужном формате и сохранит на диске и по желанию переименут файл в требуемый . Так как не хочется терять данные при случайном зависании программы, отключении дивайса и тому подобное , можно ли каждый раз при записи файл закрывать и не будет ли тормозить работу ?
aha (2010-10-24 14:08:00) [1]разница в том, что подход разный у программиста и у пользователя.
Программисту логично, что нужно создать сначала файл, записывать туда. А пользователю это не нужно знать , он запускает программу , что то делает, и завершает с сохранением данных. Это не его задача типа открытия файла. Потому что пользователи бывают р а з н ы е , есть продвинутые , есть так себе , я их не называю горе пользователи ....
sniknik (2010-10-24 13:57:00) [2]> а в ЭТОМ вопросе программист не менее компетентен, чем заказчик.
когда занимаешься каким то вопросом, часто становишься на время более компетентным чем специалисты (в той части которой занимаешся)... т.к. они только используют, а тебе нужно разобраться как запрограммировать процесс. ты в тот момент знаешь его основу, механизм, и возможные варианты, а специалисты только конечный вариант. но советуют(пытаются) именно как сделать.
например при обсуждении структуры базы, они, знакомые только с документами, и мыслят в их категориях, считают что храниться должно именно так. (не раз сталкивался) и настаивают на этом (потому, что в старой проге лазили прямо в базу править, и уставали искать..., в новой типа "должно быть правильно" и искать не нужно будет, зашли в базу и увидели документ as is), но вот попробуй только сделать как они хотят, и все рухнет (поиск, связи, индексы, нормализация)... думаю не нужно объяснять почему. объяснения что данные это основа, а документ строится после, не воспринимают (база и как оно там устроено им не интересно), а вот ты когда делаешь знаешь и то и то.
тут кстати тот же вариант, какая разница заказчику как будет сделано/процесс? ему скорее всего нужен "конечный пункт" возможность сохранить куда то в свой файл (пункт меню save as ...), а заказ (по словам автора вопроса) именно на то как сделать... и поэтому по своим представлениям навязывают изменение пункта "new"/и процесса записи, куда писать.
а новый документ это именно новый, и название у него (в паскале noname.pas/в дельфи project1.dpr) есть сразу, и файл постоянный, и ворда тоже есть такое название без ввода, просто он его удаляет если не выбрали другое при сохранении. т.е. все примерно тоже самое, но "специалисты" видя только конечный результат, не зная процесса придумывают его.
sniknik (2010-10-24 13:20:00) [3]> так как он почему-то считает себя компетентнее любых специалистов.
о, если бы заказчики были специалистами... но насколько сталкиваюсь, это начальники, менеджеры и ламеры твердо знающие только одно - "клиент всегда прав".
они могут заказать тебе "взломать винду", и сколько не доказывай, что это не дело прикладной программы по работе с документами (+ противозаконно/невозможно)... нифига не поймут, но с "умным видом" будут говорить "мы так хотим, а значит, раз мы клиенты значит делайте".
p.s. со взломом реальный случай, в проге подключение к mssql либо по его встроенной авторизации (у них не включено, и включать не хотели, не знали как скорее всего), либо по виндовой (- "ну мы включили, а говорит отказано в доступе", - "ну так нужно в винде этот доступ дать, ведь прога только использует его, а не устанавливает (установка с клиента из под бесправного юзера на сервере это взлом)", -"вот еще, мы же программой работаем а не виндой, и мы включили, значит должно работать"... бодяга длилась 2 месяца, кончилась с увольнением (просто совпало) админа на той стороне, нового устроило все как есть).
aha (2010-10-24 13:09:00) [4]давайте закроем ветку, если уже переходим на оскорбления. никому не обращался как к горекодерам. Вы знаете, задачу можно решить разными путями, и часто плюешься при работе с фирменными программами , что можно было по другому сделать. А свой вариант , я попробовал кстати, есть плюсы - время покажет,что скажет пользователь...
Юрий Зотов (2010-10-24 13:05:00) [5]
> Плохиш © (24.10.10 12:57) [49]
Топик к предметной области не относится. Он относится к юзабилити, а в ЭТОМ вопросе программист не менее компетентен, чем заказчик. Скорее даже более. Это горе-заказчик, а не горе-кодер.
Плохиш (2010-10-24 12:57:00) [6]
> Просто, когда просят что то написать , я всегда стараюсь
> убедить пользователей
Я бы от такого горекодера ущёл срату же, так как он почему-то считает себя компетентнее любых специалистов.
Плохиш (2010-10-24 12:52:00) [7]
> aha (24.10.10 11:16) [27]
>
> понимаете, заказчик диктует требования..., я может хочу
> по другому.
Заказчик прав.
sniknik (2010-10-24 12:47:00) [8]> На фига тогда советы спрашивать?
действительно. словам/"опыту" не верит, верит только "авторитетным фирменным программам".
кстати раз уж такое доверие, и даже примеры на ворд... то его же в пример, не документ, который юзером правится,
а событийное (что ближе к ответам устройства), типа записи действий в макрос..., посмотри как там делается, и когда этому макросу имя назначается.
aha (2010-10-24 12:42:00) [9]не обижайтесь , я советовался с Вами . Я нисколько не профессионал в программировании. Просто, когда просят что то написать , я всегда стараюсь убедить пользователей, так же как и вы пытаетесь, а если у них железный аргумент ( фирм. программа такова ), остается только делать так как они просят.
Юрий Зотов (2010-10-24 12:28:00) [10]Непонятно.
1. Человек спросил совета - как сделать лучше.
2. Такой совет он получил, причем один и тот же от нескольких человек, причем далеко не новичков.
3. Советы - пофиг. Человек упорно талдычит свое.
4. Ему объясняют, почему это плохо и как сделать лучше.
5. Снова пофиг. Человек снова талдычит свое.
На фига тогда советы спрашивать?
Непонятно.
aha (2010-10-24 12:24:00) [11]прощу прощения , у кого отнял драгоценное время ..
Юрий Зотов (2010-10-24 12:23:00) [12]Все. Караул устал. Переливание из пустого в порожнее надоело.
Программа Ваша - делайте, как хотите. До свидания.
Юрий Зотов (2010-10-24 12:21:00) [13]Ошибочка вкралась...
procedure TForm1.StartButtonClick(Sender: TObject);
begin
if not OpenDialog1.Execute then
Exit; // И никакой дурак не сможет забыть указать файл
try
... // Проверить доступность файла для записи
except
ShowMessage('Файл недоступен для записи. Укажите другой файл.');
Exit
end;
StartButton.Enabled := False;
try
... // Запустить поток записи данных
except
on E: Exception do
ShowMessage('Ошибка при запуске сбора данных: ' + E.Message);
StartButton.Enabled := True
end
end;
aha (2010-10-24 12:19:00) [14]ранее я тоже был такого мнения , что в начале нужно запрашивать куда записывать, создавать файл, запускать процесс, завершить , и не думать уже о сохранении, закрытии файла - все записано .
А теперь мне кажется , что по логике для юзера ,нужно делать так
запускаю процесс , наблюдаю, завершаю, а после уже программа предлагает сохранить данные, сохраняю данные ..
Юрий Зотов (2010-10-24 12:11:00) [15]> aha (24.10.10 11:01) [20]
> програма должна работать на дурака , который может забыть создать
> файл для записи
НЕ СМОЖЕТ!!! ДАЖЕ ДУРАК НЕ СМОЖЕТ!!! ФИЗИЧЕСКИ НЕ СМОЖЕТ!!! В ТОМ-ТО ВСЕ И ДЕЛО!!!
Вы [19] читали? Программа СНАЧАЛА спрашивает у юзера, в какой файл писать данные, и только ПОТОМ начинает их запись. Если юзер не указал файл, запись просто не запускается.
Блин! Что может быть проще?
procedure TForm1.StartButtonClick(Sender: TObject);
begin
if OpenDialog1.Execute then
try
... // Проверить доступность файла для записи
except
... // Выдать сообщение об ошибке
Exit;
end;
StartButton.Enabled := False;
... // Запустить поток записи данных
end;
> aha (24.10.10 11:08) [24]
> так примерно и ворд работает
И что происходит с вордом при отключении питания? Вы разве ЭТОГО хотите?
aha (2010-10-24 11:45:00) [16]смысл не в том , что программа или пользователь дает название , я имел ввиду момент сохранения файла. ДО сих пор программы, написанные мной, в начале предлагают создать файл для записи, программа дает по умолчанию свое название , пользователь может сменить на свое .процесс прошел , данные сохранились.
Теперь я хочу сделать так , но программа не будет просить сохранить данные в начале ,а после завершения процесса , попросить сохранить - вся разница в этом..
sniknik (2010-10-24 11:37:00) [17]ну в общем в гипертерминале тоже нельзя, насколько помню, там было просто "включить логирование" и протокол отражался в мемо на экране, но при желании его можно было сохранить куда то, и вот этот файл уже указывался. (не помню точно, последний диалап модем в 98г был...)
после
aha (24.10.10 11:20) [29]
похоже у него примерный аналог.
Anatoly Podgoretsky (2010-10-24 11:33:00) [18]Я знаю много коммуникационных программ, обычно там можно только выразить желание, остальное дело программы.
Anatoly Podgoretsky (2010-10-24 11:30:00) [19]> sniknik (24.10.2010 11:26:32) [32]
Ничего подобного, ты видеорекордеры видел, в большинстве, ни место, ни имя
указать нельзя.
Anatoly Podgoretsky (2010-10-24 11:29:00) [20]> sniknik (24.10.2010 11:23:30) [30]
Ага, а нам просто лапшу на уши вешает.