зашить AVR

Apr 10, 2005 94 Replies

Hello Michael.

15 Apr 05 21:00, you wrote to Sergey A. Borshch:

SAB>> Hа десктопе линк на папку X, в ней папки ..., Y, ..., в папке Y SAB>> есть MZ> Да не то это :(

Почему?

SAB>> и уволить. А при появлении каждой новой версии править SAB>> приложение - это удобнее? Вот бы не подумал... MZ> Hафиг править приложение?! MZ> Править _базу_ на сервере. MZ> И не руками, а дугим приложением, девеолоперским.

Сделать ярлык на каталог на сервере. И там править. И права на запись там же установить. Это и будет база. Древовидная, с использованием встроенных возможностей операционной системы.

Alexey

Hello Kirill.

17 Apr 05 09:55, you wrote to Alex Mogilnikov:

Почему? Я тоже так делал. Когда флешка к AT91M40400 была подключена.

KF> Hикогда бы не додумался. А какой софт используется?

Я - свой.

KF> И это любые KF> микросхемы с JTAG позволяют? :-/

По идее все, которые позволяют внешними выводами управлять. (EXTEST, или как он там называется)

Alexey

Здравствуйте.

KF>> Почему без использования батников извратно? MZ> Потому что надо написать больше сотни строк на С. только ради MZ> перенаправления вывода. При этом сотня или две строк на прологе - уже MZ> готово ядро для оболчки програматора. С засыванием базы из файла, и с MZ> запросами к базе. Еще сотня строк - и ядро железобетнное, со всеми MZ> обработками ошибок (т.е. оно не прервет операцию из за файловой ошибки MZ> или эксепшена). Согласись что в таком раскладе - изврат тратить сотню MZ> строк на пренаправление вывода. Хотя это мелочь конечно.

Утомил уже. Дарю:

#if !defined(AFX_CONSOLESPAWNER_H__2F09535A_9EA1_4E9E_B085_382FACA05D00__INCLUDED_) #define AFX_CONSOLESPAWNER_H__2F09535A_9EA1_4E9E_B085_382FACA05D00__INCLUDED_

#if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // ConsoleSpawner.h : header file //

///////////////////////////////////////////////////////////////////////////// // CConsoleSpawner window

class CConsoleSpawner : public CEdit { // Construction public: CConsoleSpawner();

// Attributes public: HANDLE m_hChildStdInRead; HANDLE m_hChildStdInWrite; HANDLE m_hChildStdOutRead; HANDLE m_hChildStdOutWrite; PROCESS_INFORMATION m_pi;

// Operations public: int Execute(LPCSTR szCmdLine); void GenerateBreak();

// Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CConsoleSpawner) protected: virtual void PreSubclassWindow(); //}}AFX_VIRTUAL

// Implementation public: CBrush m_brush; virtual ~CConsoleSpawner();

// Generated message map functions protected: //{{AFX_MSG(CConsoleSpawner) afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor); afx_msg void OnDestroy(); //}}AFX_MSG

DECLARE_MESSAGE_MAP()

void TraceLine(const char* szFormat, ...); };

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_CONSOLESPAWNER_H__2F09535A_9EA1_4E9E_B085_382FACA05D00__INCLUDED_)

// ConsoleSpawner.cpp : implementation file //

#include "stdafx.h" #include "crossflasher.h" #include "ConsoleSpawner.h"

#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif

///////////////////////////////////////////////////////////////////////////// // CConsoleSpawner

CConsoleSpawner::CConsoleSpawner() { m_hChildStdInRead = NULL; m_hChildStdInWrite = NULL; m_hChildStdOutRead = NULL; m_hChildStdOutWrite = NULL; memset(&m_pi, 0, sizeof(m_pi)); }

CConsoleSpawner::~CConsoleSpawner() { }

BEGIN_MESSAGE_MAP(CConsoleSpawner, CEdit) //{{AFX_MSG_MAP(CConsoleSpawner) ON_WM_CTLCOLOR_REFLECT() ON_WM_DESTROY() //}}AFX_MSG_MAP END_MESSAGE_MAP()

///////////////////////////////////////////////////////////////////////////// // CConsoleSpawner message handlers

HBRUSH CConsoleSpawner::CtlColor(CDC* pDC, UINT nCtlColor) { return (HBRUSH)m_brush.GetSafeHandle(); }

void CConsoleSpawner::PreSubclassWindow() { CEdit::PreSubclassWindow(); m_brush.CreateSolidBrush(GetSysColor(COLOR_WINDOW)); }

void CConsoleSpawner::OnDestroy() { CEdit::OnDestroy(); m_brush.DeleteObject(); }

/**************************************************************************** * Функция : CConsoleSpawner::Execute() * Назначение : Запуск приложения и перехват его вывода в присабклассенный * editbox * Автор : Алексей Краснов * Создана : 12.05.2003 17:27:54 * Параметры : * LPCSTR szCmdLine - командная строка * Возвращает : int - код возврата запущенного приложения или -1 в случае, * если возникла ошибка в другом месте ****************************************************************************/ int CConsoleSpawner::Execute(LPCSTR szCmdLine) { // очищаем окно вывода SetWindowText("");

SECURITY_ATTRIBUTES sa;

// создаем анонимные пайпы memset(&sa, 0, sizeof(sa)); sa.nLength = sizeof(sa); sa.bInheritHandle = TRUE;

// стандартный ввод if (!CreatePipe(&m_hChildStdInRead, &m_hChildStdInWrite, &sa, 1)) { TraceLine("Cannot create child stdin pipe. Error 0x%08X.\r\n", GetLastError()); return -1; }

// стандартный вывод if (!CreatePipe(&m_hChildStdOutRead, &m_hChildStdOutWrite, &sa, 1)) { TraceLine("Cannot create child stdout pipe. Error 0x%08X.\r\n", GetLastError()); return -1; }

// запускаем процесс STARTUPINFO si;

memset(&si, 0, sizeof(si)); si.cb = sizeof(si); si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; si.wShowWindow = SW_HIDE; si.hStdInput = m_hChildStdInRead; si.hStdOutput = m_hChildStdOutWrite; si.hStdError = m_hChildStdOutWrite;

char caBuff[MAX_PATH]; strcpy(caBuff, szCmdLine);

if (CreateProcess(NULL, caBuff, NULL, NULL, TRUE, CREATE_NEW_PROCESS_GROUP, NULL, NULL, &si, &m_pi) == 0) { TraceLine("Cannot create child process. Error 0x%08X.\r\n", GetLastError()); return -1; }

char buff[256]; DWORD dwBytesRead, dwBytesAvail;

while (TRUE) { // проверим наличие данных в пайпе, исключив тем самым блокировку // потока при отсутствии данных if (PeekNamedPipe(m_hChildStdOutRead, buff, 1, &dwBytesRead, &dwBytesAvail, NULL) && dwBytesRead == 1) { if (dwBytesAvail > sizeof(buff)) dwBytesAvail = sizeof(buff) - 1; if (ReadFile(m_hChildStdOutRead, buff, dwBytesAvail, &dwBytesRead, NULL) && dwBytesRead == dwBytesAvail) { buff[dwBytesRead] = 0; TraceLine(buff); } }

// отрабатываем оконные сообщения MSG msg; if (::PeekMessage(&msg, NULL, NULL, NULL, PM_NOREMOVE)) AfxGetApp()->PumpMessage();

// ждем сигнала завершения процесса if (WaitForSingleObject(m_pi.hProcess, 1) == WAIT_OBJECT_0) break; }

CloseHandle(m_hChildStdInRead); m_hChildStdInRead = NULL; CloseHandle(m_hChildStdInWrite); m_hChildStdInWrite = NULL; CloseHandle(m_hChildStdOutRead); m_hChildStdOutRead = NULL; CloseHandle(m_hChildStdOutWrite); m_hChildStdOutWrite = NULL;

int nRes; GetExitCodeProcess(m_pi.hProcess, (LPDWORD)&nRes);

CloseHandle(m_pi.hProcess); CloseHandle(m_pi.hThread); memset(&m_pi, 0, sizeof(m_pi));

return nRes; }

/**************************************************************************** * Функция : CConsoleSpawner::TraceLine() * Назначение : Вывод строки с форматированием в конец присабклассенного * editbox * Автор : Алексей Краснов * Создана : 13.05.2003 11:10:13 * Параметры : * const char* szFormat - строка формата для sprintf ****************************************************************************/ void CConsoleSpawner::TraceLine(const char* szFormat, ...) { va_list arglist; va_start(arglist, szFormat); char szBuffer[512]; vsprintf(szBuffer, szFormat, arglist); int n = GetWindowTextLength(); SetSel(n, n); ReplaceSel(szBuffer); va_end(arglist); }

/**************************************************************************** * Функция : CConsoleSpawner::GenerateBreak() * Назначение : Генерирует событие Ctrl-Break для дочернего процесса * Автор : Алексей Краснов * Создана : 13.05.2003 15:51:37 ****************************************************************************/ void CConsoleSpawner::GenerateBreak() { if (m_pi.dwProcessId) GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT, m_pi.dwProcessId); }

ðÒÉ×ÅÔ Kirill!

17 Apr 05 10:55, Kirill Frolov ÐÉÓÁÌ Alex Mogilnikov:

KF> :-( )

KF> HÉËÏÇÄÁ ÂÙ ÎÅ ÄÏÄÕÍÁÌÓÑ. á ËÁËÏÊ ÓÏÆÔ ÉÓÐÏÌØÚÕÅÔÓÑ?

úÁ ÓÏÎÏ×Õ ÂÙÌÁ ×ÚÑÔÁ ÐÒÏÇÒÁÍÍËÁ ajflash, ËÏÔÏÒÁÑ ÐÒÏÇÒÁÍÍÉÒÕÅÔ ðúõ, ÐÏÄËÌÀÞÅÎÎÙÅ Ë ARM7. ÷ÚÑÔÁ ÏÎÁ ÂÙÌÁ, ËÁÖÅÔÓÑ, Ó ÓÁÊÔÁ éÎÔÅÌÁ, Á ÎÁÐÉÓÁÎÁ ËÁËÉÍ-ÔÏ ÓÔÕÄÅÎÔÏÍ × ËÁÞÅÓÔ×Å ËÕÒÓÏ×ÏÇÏ. ðÏÓÌÅ ÎÅÂÏÌØÛÏÊ ÐÅÒÅÄÅÌËÉ ÏÎÁ ÄÁÖÅ ÓÔÁÌÁ ÒÁÂÏÔÁÔØ. ðÏ ÉÄÅÅ, ÔÁÍ ÍÎÏÇÏ ÞÅÇÏ ÎÁÄÏ ÂÙ ÐÅÒÅÄÅÌÁÔØ ÐÏ ÕÍÕ, ÎÏ ËÁË ÏÎÁ ÒÁÂÏÔÁÅÔ ÓÅÊÞÁÓ, ×ÓÅÈ ÕÓÔÒÁÉ×ÁÅÔ...

KF> é ÜÔÏ ÌÀÂÙÅ ÍÉËÒÏÓÈÅÍÙ Ó JTAG ÐÏÚ×ÏÌÑÀÔ? :-/

ôÅÏÒÅÔÉÞÅÓËÉ, ÄÏÌÖÎÙ ÐÏÚ×ÏÌÑÔØ ÌÀÂÙÅ, ÉÂÏ JTAG ÉÎÔÅÒÆÅÊÓ ÐÏÚ×ÏÌÑÅÔ ÐÏÌÕÞÉÔØ ÄÏÓÔÕÐ Ë ×Ù×ÏÄÁÍ ÍÉËÒÏÓÈÅÍÙ É ÕÐÒÁ×ÌÑÔØ ÉÍÉ - ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ÚÁÄÁÎÎÙÅ ÓÏÓÔÏÑÎÉÑ ×ÙÈÏÄÏ× É ÓÞÉÔÙ×ÁÔØ ÓÏÓÔÏÑÎÉÅ ×ÈÏÄÏ×. á ÎÁ ÐÒÁËÔÉËÅ ×ÓÅ ÚÁ×ÉÓÉÔ ÏÔ ÔÏÇÏ, ÎÁÓËÏÌØËÏ ÐÏÌÎÏ JTAG ÉÎÔÅÒÆÅÊÓ ÒÅÁÌÉÚÏ×ÁÎ. HÁÐÒÉÍÅÒ × ÎÅËÏÔÏÒÙÈ ARM ËÏÎÔÒÏÌÌÅÒÁÈ ÓÏÂÓÔ×ÅÎÎÏ ÃÅÐÏÞËÁ ÓËÁÎÉÒÏ×ÁÎÉÑ ÏÔÓÕÔÓÔ×ÕÅÔ, ÞÔÏ ÎÅ ÐÏÚ×ÏÌÑÅÔ ÐÒÏÉÚ×ÏÄÉÔØ ÐÏÌÎÏÃÅÎÎÙÅ ÔÅÓÔÙ ÍÏÎÔÁÖÁ. úÁÔÏ ÓÁÍÏ ÑÄÒÏ ÐÏÚ×ÏÌÑÅÔ ÐÏÌÕÞÉÔØ ÄÏÓÔÕÐ Ë ËÏÎ×ÅÊÅÒÕ ËÏÍÁÎÄ É "×ÒÕÞÎÕÀ" ÚÁÇÒÕÖÁÔØ ÔÕÄÁ É ÉÓÐÏÌÎÑÔØ ÎÕÖÎÙÅ ËÏÄÙ. ÷ÓÅÇÏ ÎÁÉÌÕÞÛÅÇÏ, [Team PCAD 2000] áÌÅËÓÅÊ í. ... ÷ ÓÉÓÔÅÍÅ ×ÏÚÍÏÖÎÏ ÂÅÓËÏÎÅÞÎÏÅ ÞÉÓÌÏ ÐÒÏÃÅÓÓÏ× - ÄÏ 256.

Hi Alexey,

Mon Apr 18 2005 13:13, Alexey Krasnov wrote to Michael Zaichenko:

MZ>> запросами к базе. Еще сотня строк - и ядро железобетнное, со всеми MZ>> обработками ошибок (т.е. оно не прервет операцию из за файловой ошибки MZ>> или эксепшена). Согласись что в таком раскладе - изврат тратить сотню MZ>> строк на пренаправление вывода. Хотя это мелочь конечно.

AK> Утомил уже. Дарю: Спасибо конечно, но похожее было в MSDN :) Яж не просил исходник, я обьяснял почему с моей точки зрения изврат...

WBR, Michael

Hi Alexey,

Mon Apr 18 2005 11:05, Alexey Boyko wrote to Michael Zaichenko:

AB> Hello Michael.

AB> 15 Apr 05 21:00, you wrote to Sergey A. Borshch:

SAB>>> Hа десктопе линк на папку X, в ней папки ..., Y, ..., в папке Y SAB>>> есть MZ>> Да не то это :( AB> Почему? Потому что в практических условиях кронкретного предпиятия не то.

SAB>>> и уволить. А при появлении каждой новой версии править SAB>>> приложение - это удобнее? Вот бы не подумал... MZ>> Hафиг править приложение?! MZ>> Править _базу_ на сервере. MZ>> И не руками, а дугим приложением, девеолоперским.

AB> Сделать ярлык на каталог на сервере. И там править. И права на запись там AB> же установить. Это и будет база. Древовидная, с использованием встроенных AB> возможностей операционной системы. Да можно и так, только это _не_ _база_ ! В свое приложение я могу пихнуть описания прошивок, генератор отчетов...

Hо суть то не в этом. Hе проблема написать апликуху. ваще не вопрос. Вопрос в том чем _готовым_ шить из командной строки 27с...29с. Чтобы из одной оболочки шить _все_. Про Chipprog спросил, тишина :(

WBR, Michael

Hello Michael.

21 Apr 05 23:46, you wrote to me:

AB>> Почему? MZ> Потому что в практических условиях кронкретного предпиятия не то.

Hу разве что.

AB>> Сделать ярлык на каталог на сервере. И там править. И права на AB>> запись там же установить. Это и будет база. Древовидная, с AB>> использованием встроенных возможностей операционной системы. MZ> Да можно и так, только это _не_ _база_ !

Это тоже _база_ !

MZ> В свое приложение я могу пихнуть описания прошивок, генератор MZ> отчетов...

Кидать в каталог txt файл. Это же то же самое будет, что и в своем приложении. Ярлык на рабочем столе - открывается окно со списком устройств. Hеважно, что это не своя программа, а проводник виндовс. Дважды кликаешь на устройстве - открывается список прошивок. Дважды кликаешь на прошивке открывается окно со списком "Запрограммировать.bat" и "Описание.txt". Hеважно, что для просмотра описания запускается блокнот, а не встроенный просмотрщик твоей программы.

Билли придумал вам такой обалденную концепцию рабочего стола, а вы не хотите его использовать.

С генератором отчетов - не понял.

MZ> Hо суть то не в этом. Hе проблема написать апликуху. ваще не вопрос. MZ> Вопрос в том чем _готовым_ шить из командной строки 27с...29с. MZ> Чтобы из одной оболочки шить _все_.

Тут ничего не подскажу.

Alexey

Hi Alexey,

Fri Apr 22 2005 10:41, Alexey Boyko wrote to Michael Zaichenko:

AB>>> Сделать ярлык на каталог на сервере. И там править. И права на AB>>> запись там же установить. Это и будет база. Древовидная, с AB>>> использованием встроенных возможностей операционной системы. MZ>> Да можно и так, только это _не_ _база_ ! AB> Это тоже _база_ ! Это набор файлов. не удобно переносить и редактировать. Hе удобно обрабатывать. Hет автоматических связей и тд. Оно прекрасно, когда 3 или 5 прошивок. А если 100 или 1000?

MZ>> В свое приложение я могу пихнуть описания прошивок, генератор MZ>> отчетов...

AB> Кидать в каталог txt файл. Это же то же самое будет, что и в своем AB> приложении. Это будет совсем не тоже самое.

AB> Ярлык на рабочем столе - открывается окно со списком устройств. Hеважно, AB> что это не своя программа, а проводник виндовс. Дважды кликаешь на AB> устройстве - открывается список прошивок. Дважды кликаешь на прошивке AB> открывается окно со списком "Запрограммировать.bat" и "Описание.txt". AB> Hеважно, что для просмотра описания запускается блокнот, а не встроенный AB> просмотрщик твоей программы. Это же уродство :(

AB> Билли придумал вам такой обалденную концепцию рабочего стола, а вы не AB> хотите его использовать. Есно не хотим. Я не могу в его окно напихать контролов. Да и винды хлебом не корми - все иконки перемешать. Да и юзер их может перемешать, и это ему никто не запретит. ацтой вобщем.

Лучше скажажи, чем Биллин рабочий стол лучше спецзаточенй апликухи?

AB> С генератором отчетов - не понял. Кто когда и чего шил например. логи короче.

WBR, Michael

Nabor_fajjlov.zip -- ÔÁË ÌÕÞÛÅ?

ëÁËÉÈ Åݣ Ó×ÑÚÅÊ?

Hello Michael.

23 Apr 05 22:55, you wrote to me:

AB>> Это тоже _база_ ! MZ> Это набор файлов.

Hу хорошо, база из набора файлов.

MZ> не удобно переносить и редактировать.

Far F5/F6. Пользователь редактировать не будет. А ты можешь редактировать на F4 или скриптами из шаблонов.

MZ> Hе удобно обрабатывать. Hет автоматических связей и тд.

Вот уж дельфистов развелось. Если команд cmd.exe не хватает, возьми Windows Scripting Host (JS/VB)

MZ> Оно прекрасно, когда 3 или 5 прошивок. MZ> А если 100 или 1000?

Какая разница? У файловой системы нет ограничения на 1000 файлов.

AB>> Кидать в каталог txt файл. Это же то же самое будет, что и в AB>> своем приложении. MZ> Это будет совсем не тоже самое.

Функционально - то же самое.

AB>> "Запрограммировать.bat" и "Описание.txt". Hеважно, что для AB>> просмотра описания запускается блокнот, а не AB>> встроенный просмотрщик твоей программы. MZ> Это же уродство :(

Смотря как посмотреть. Если работает, и при этом на такую систему программирования потрачено меньше времени и сил, чем на разработку своей программы - то это не уродство. Совсем. Более того, именно так оно и задуманно.

AB>> Билли придумал вам такой обалденную концепцию рабочего стола, а AB>> вы не хотите его использовать. MZ> Есно не хотим. Я не могу в его окно напихать контролов.

Каких контролов? Я же показал как создавать действия при щелканьи мышкой в определенной области экрана.

MZ> Да и винды хлебом не корми - все иконки перемешать. MZ> Да и юзер их может перемешать, и это ему никто не запретит. MZ> ацтой вобщем.

Как это перемешать? Запись в эти каталоги для юзера запрещена.

MZ> Лучше скажажи, чем Биллин рабочий стол лучше спецзаточенй апликухи?

Тем, что он уже готов. Его не надо писать. Его для этого и писали.

AB>> С генератором отчетов - не понял. MZ> Кто когда и чего шил например. логи короче.

Из тех же скриптов.

ps: Короче я вижу - у тебя религиозные предрассудки против такого решения.

Alexey

Тем что он есть "здесь и сейчас". А апликуха - лишняя сущность.

Из батника тебе тоже никто не запрещает скинуть запись в лог. echo %date%-%time% %user% %firmvare% %result%>> \\server\logs\firmware_writes.log

Денис.

Hi Alexey,

Mon Apr 25 2005 15:56, Alexey Boyko wrote to Michael Zaichenko:

MZ>> не удобно переносить и редактировать.

AB> Far F5/F6. Пользователь редактировать не будет. А ты можешь редактировать AB> на F4 или скриптами из шаблонов. Редактировать один файл можно чем угодно. А если все? Hе, можно конечно запусить поиск и замену по всем файлам, но это не всегда работает.

MZ>> Hе удобно обрабатывать. Hет автоматических связей и тд.

AB> Вот уж дельфистов развелось. Если команд cmd.exe не хватает, возьми AB> Windows Scripting Host (JS/VB) Я не буду писать на дельфях. Мне более чем достаточно пролога.

MZ>> Оно прекрасно, когда 3 или 5 прошивок. MZ>> А если 100 или 1000? AB> Какая разница? У файловой системы нет ограничения на 1000 файлов. У малограмотного пользователя есть.

AB>>> "Запрограммировать.bat" и "Описание.txt". Hеважно, что для AB>>> просмотра описания запускается блокнот, а не AB>>> встроенный просмотрщик твоей программы. MZ>> Это же уродство :(

AB> Смотря как посмотреть. Если работает, и при этом на такую систему AB> программирования потрачено меньше времени и сил, чем на разработку своей AB> программы - то это не уродство. Совсем. Похожая система у меня _уже_ есть. Hе нравится не мне ни юзерам.

AB>>> Билли придумал вам такой обалденную концепцию рабочего стола, а AB>>> вы не хотите его использовать. MZ>> Есно не хотим. Я не могу в его окно напихать контролов.

AB> Каких контролов? Я же показал как создавать действия при щелканьи мышкой AB> в определенной области экрана. В том и дело что _неопределенной_ области экрана.

MZ>> Да и винды хлебом не корми - все иконки перемешать. MZ>> Да и юзер их может перемешать, и это ему никто не запретит. MZ>> ацтой вобщем. AB> Как это перемешать? Запись в эти каталоги для юзера запрещена. В папке лежит 10 файлов. я открыл папку. Кто определяет координаты окна и иконок файлов в окне? Кто гарантирует что завтра положение иконок в окне не изменится?

MZ>> Лучше скажажи, чем Биллин рабочий стол лучше спецзаточенй апликухи? AB> Тем, что он уже готов. Его не надо писать. Его для этого и писали. Блин. Если апликуха пишется за 2 дня, то о чем тут говорить? Офигенно сложный проект :)))

AB>>> С генератором отчетов - не понял. MZ>> Кто когда и чего шил например. логи короче. AB> Из тех же скриптов. Хорошо, а смотреть логи чем? только не говори блокнотом. Меня (или начальство) может статистика или отчеты заинтересовать, за любой период времени. Как ни крути, а запрос к бд дает море возможностей. Hачальству проще тыкать мышкой в формы. А тыкать мышкой в папки с файлами... не, это я уже проходил, больше не хочу. Лучше потратить неделю на апликуху чем месяцы на техподдержку и вопли а фигли оно так не правильно и нелогично. Причем правильно и логично у каждого юзера идет в разрез с другими юзерами. Самое веселое когда диаметрально разные представления у генерального и технического директора, а у техника ваще третье и несовместимое.

AB> ps: Короче я вижу - у тебя религиозные предрассудки против такого AB> решения. нет. У меня есть реальный опыт использования подобных решений. В среде когда все профи - оно рулез. Hо когда 99% юзверей - чайники, вот тогда и начинаются проблемы.

WBR, Michael

Alexey, ты ещё здесь сидишь?

Понедельник Апрель 25 2005 14:56, Alexey Boyko wrote to Michael Zaichenko:

MZ>> Оно прекрасно, когда 3 или 5 прошивок. MZ>> А если 100 или 1000? AB> Какая разница? У файловой системы нет ограничения на 1000 файлов.

Пользователя не жалко?! Искать нужный файл среди 999 "неправильных"...

Георгий

Hello Michael.

26 Apr 05 01:08, you wrote to me:

AB>> Far F5/F6. Пользователь редактировать не будет. А ты можешь AB>> редактировать на F4 или скриптами из шаблонов. MZ> Редактировать один файл можно чем угодно. А если все?

sed/awk/perl

MZ> Hе, можно конечно запусить поиск и замену по всем файлам, но это не MZ> всегда работает.

Как напишешь.

AB>> Вот уж дельфистов развелось. Если команд cmd.exe не хватает, AB>> возьми Windows Scripting Host (JS/VB) MZ> Я не буду писать на дельфях. Мне более чем достаточно пролога.

Еще лучше.

AB>> Каких контролов? Я же показал как создавать действия при щелканьи AB>> мышкой в определенной области экрана. MZ> В том и дело что _неопределенной_ области экрана.

У тебя юзеры читать не умеют? Кстати, и окно твоего приложения они тоже могут переместить/растянуть.

AB>> Как это перемешать? Запись в эти каталоги для юзера запрещена. MZ> В папке лежит 10 файлов. я открыл папку. Кто определяет координаты MZ> окна и иконок файлов в окне? Кто гарантирует что завтра положение MZ> иконок в окне не изменится?

А зачем это определять/гарантировать?

MZ> Блин. Если апликуха пишется за 2 дня, то о чем тут говорить? MZ> Офигенно сложный проект :)))

Поэтому решай сам. Если тебе это написать за два дня - то ты бы уже написал. Переписываемся мы дольше.

MZ>>> Кто когда и чего шил например. логи короче. AB>> Из тех же скриптов. MZ> Хорошо, а смотреть логи чем? только не говори блокнотом.

Таки блокнотом. Hу, можно в csv записать и смотреть екселем. (через WHS можно и в базу данных кидать)

AB>> ps: Короче я вижу - у тебя религиозные предрассудки против такого AB>> решения. MZ> нет. У меня есть реальный опыт использования подобных решений. MZ> В среде когда все профи - оно рулез. Hо когда 99% юзверей - чайники, MZ> вот тогда и начинаются проблемы.

Тебе виднее.

Alexey

Hello George.

26 Apr 05 03:17, you wrote to me:

MZ>>> Оно прекрасно, когда 3 или 5 прошивок. MZ>>> А если 100 или 1000? AB>> Какая разница? У файловой системы нет ограничения на 1000 файлов. GS> Пользователя не жалко?! Искать нужный файл среди 999 GS> "неправильных"...

Так они же иерархически организованы. 10 проектов по 10 контроллеров по 10 вариантов прошивки.

Alexey

Hi Alexey,

Tue Apr 26 2005 11:37, Alexey Boyko wrote to Michael Zaichenko:

MZ>> Hе, можно конечно запусить поиск и замену по всем файлам, но это не MZ>> всегда работает. AB> Как напишешь. Дело не в том чем делать поиск и замену. А дело в том, что не всегда оно возможно примитивным поиском и заменой.

AB>>> Каких контролов? Я же показал как создавать действия при щелканьи AB>>> мышкой в определенной области экрана. MZ>> В том и дело что _неопределенной_ области экрана. AB> У тебя юзеры читать не умеют? Кстати, и окно твоего приложения они тоже AB> могут переместить/растянуть. Можно создать таск окно в виде диалога, у которого нельзя менять размер. Потом даже если менять размер, то контролы сами по себе перемещаться не могут.

AB>>> Как это перемешать? Запись в эти каталоги для юзера запрещена. MZ>> В папке лежит 10 файлов. я открыл папку. Кто определяет координаты MZ>> окна и иконок файлов в окне? Кто гарантирует что завтра положение MZ>> иконок в окне не изменится? AB> А зачем это определять/гарантировать? Затем что моему пользователью проще запомнить визуально куды тыкать.

MZ>> Блин. Если апликуха пишется за 2 дня, то о чем тут говорить? MZ>> Офигенно сложный проект :))) AB> Поэтому решай сам. Если тебе это написать за два дня - то ты бы уже AB> написал. Дык мне всевремя утвержали что это не правильно и надо юзать батники :))

AB> Переписываемся мы дольше. А это не важно. Hовый програматор для 29* еще не куплен.

WBR, Michael

Hi Alexey,

Tue Apr 26 2005 11:46, Alexey Boyko wrote to George Shepelev:

MZ>>>> Оно прекрасно, когда 3 или 5 прошивок. MZ>>>> А если 100 или 1000? AB>>> Какая разница? У файловой системы нет ограничения на 1000 файлов. GS>> Пользователя не жалко?! Искать нужный файл среди 999 GS>> "неправильных"...

AB> Так они же иерархически организованы. 10 проектов по 10 контроллеров по AB> 10 вариантов прошивки. Hе все так просто. некоторые одинаковые платы идут в разные проекты. одинаковые прошивки могут зашиваться в разные кристалы с разными опциями (типа несколько модификаций одной платы). плюс еще вариант ремона или зипа, для изделий, в том числе снятых с производства....

WBR, Michael

Alexey, ты ещё здесь сидишь?

Вторник Апрель 26 2005 10:46, Alexey Boyko wrote to George Shepelev:

MZ>>>> Оно прекрасно, когда 3 или 5 прошивок. MZ>>>> А если 100 или 1000? AB>>> Какая разница? У файловой системы нет ограничения на 1000 AB>>> файлов. GS>> Пользователя не жалко?! Искать нужный файл среди 999 GS>> "неправильных"... AB> Так они же иерархически организованы. 10 проектов по 10 контроллеров AB> по 10 вариантов прошивки.

А сопровождать всю эту "иерархию" не замучаешься? И объяснять юзерам, в каком именно месте они "неправильную" иконку ткнули?

Куда проще всё это дело пронумеровать и снабдить каждое задание соответствующим шифром, который и набирают для программирования (а там уж путь хоть примитивные bat-ники работают):

ab05 || \ || номер прошивки (от 00 до 99 = 99 вариантов) | \ | тип контроллера (от 0 до z = 36 вариантов) \ номер проекта (от 0 до z = 36 вариантов)

Лично мне записать и набрать (или продиктовать) 4 символа куда проще, чем разбираться с кучей иерархически организованных иконок... Если использовать русские буквы - число "цифро-буквенных" вариантов теоретически увеличивается до 43 ;-)

Рекомендация при практической работе. Hе использовать буквы, которые могут быть неправильно интерпретированы, например: D G I l O Q V ё З й О щ Ъ Ы.

Георгий

MZ> MZ>>>> Оно прекрасно, когда 3 или 5 прошивок. MZ> MZ>>>> А если 100 или 1000? MZ> AB>>> Какая разница? У файловой системы нет ограничения на 1000 файлов. MZ> GS>> Пользователя не жалко?! Искать нужный файл среди 999 MZ> GS>> "неправильных"... MZ> MZ> AB> Так они же иерархически организованы. 10 проектов по 10 контроллеров MZ> AB> по MZ> AB> 10 вариантов прошивки. MZ> Hе все так просто. некоторые одинаковые платы идут в разные проекты. MZ> одинаковые прошивки могут зашиваться в разные кристалы с разными опциями MZ> (типа несколько модификаций одной платы). плюс еще вариант ремона или зипа, MZ> для изделий, в том числе снятых с производства....

Дык, напрашивается применение системы поддержки версий типа CVS, subversion и т.п.

А если еще нужно вносить изменения, то тем более.

Hello Michael.

26 Apr 05 22:46, you wrote to me:

AB>> Как напишешь. MZ> Дело не в том чем делать поиск и замену. А дело в том, что не всегда MZ> оно возможно примитивным поиском и заменой.

Так я ж и говорю - как напишешь.

MZ> Можно создать таск окно в виде диалога, у которого нельзя менять MZ> размер. Потом даже если менять размер, то контролы сами по себе MZ> перемещаться не могут.

Кстати, окна с неизменяемым размером - mustdie.

AB>> Поэтому решай сам. Если тебе это написать за два дня - то ты бы AB>> уже написал. MZ> Дык мне всевремя утвержали что это не правильно и надо юзать батники

Hу, я просто подходил с позиции, что это может быть легче и быстрее.

Alexey

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required