Member
Статус: Не в сети Регистрация: 04.01.2004 Откуда: Владивосток
что ж.. мож кто поможет:
post1
я решил я все таки написать составитель расписаний.но всю сложность работы понял тока спустя неделю работы. перечислю сложности:а) у нас в лицее 7-11 классы, по 3 класса на параллеле, итого 15 классов.б) надо учитывать1)один учитель в один день не может вести урок у двух классов одновремеенно(так же некоторый учителя могут вести уроки как у одной параллели, так и у другой)2)некоторые уроки должный быть парами, некторые нет3)не должно быть дней, когда в расписании 2 физики, 2 алгебры, 2 русский, т.е. тяжелых дней(тут я решил ввести коэф сложности для каждого предмета)4)одиночный уроки, такие как черчение, химия, геометрия и т.ду одной параллели должны быть в один деньэто далеко не весь список, чем дальше, тем хуже...2 раза переписывал весь код.решил было сделать генератором. получилось составлять расписание на неделю для одого класса с учетом парный - непарных предметов, учитывается кол-во предметов в неделю, например, если в неделе одно черчение, то оно должно быть только одно.но позже понял, что если добавить еще 2 класса в параллели, то с генератором далеко не уедешь.. а если учесть, что потом бы пришлось добавлять 4 параллели..
post 2
значит так. занялся все же я этим и дальше.программа успешно составляла действительно хорошее расписание с учетом многих факторов на неделю для одного класса.если добавить еще параллель или несколько классов, то усложится программа не особо.но появилась трудность - мы не знаем сколько классов в параллели, сколько параллелей в школе всего.затем, нам надо где то хранить расписание на каждый день для каждого класса(если классы 1-11 и по 3 класса в параллели, то всего классов 33!!! ) + учителя, ведущие данный предмет + кабинет урока.но мы не знаем, сколько классов у той или иной школы, для которой генерируется расписание, поэтому хранить в массивах(кт надо указывать длину заранее..) вряд ли получится. хранить инфу в бд? бред, т.к при составлении расписания для одного класса, надо учитывать расписание другого, а работа с бд(постоянный многочиленный запросы в бд...) очень замедлит работу программы. хранение в stringlist ах или еще чем нить подобном - тоже плохой вариант, даже - невозможный..сложная задачка, однако..
post 3
для каждого урока нужно хранить: номер урока, само название урока + учитель.уроков у одного класса в день 6, в неделю - 36, а у всех параллелей 11 * 6 * 6 = 396 уроков в неделю.я не пойму, в чем хранить?если вопрос не понятен, то:возмем 9-10 классы.некоторые учителя ведут уроки как у 9, так и у 10 классов(например, русский ).вот я сгенерировал расписание для 9-х классов.вот я сгенерировал расписание для 10А класса.потом, когда я генерирую расписание для 10Б класса, мне уже надо учитывать расписание не только 10А , но и 9-х классов, т.е что б не получилось, что у одного учителя(здесь -учителя русского) в один час сразу два урока - у 9* и у 10Б класса.т.е. мне надо проверить всю параллель 9-х классов, нет ли у какого нить из них 3-м уроком в понедельник русского языка . если нет, то я могу добавить 10Б в понед третьим уроком русский, else опять перегенирировать расписание.это самое else встречается в алгоритме очень часто, т.е перебор будет очень большим(хотя меня это не волнует).как мне все это хранить, где? сейчас, когда прога генерили расисание для одного класса на всю недедлю, я храню так(переделывать прийдется точно.):weak:array[1..6, 1..6] of string;1-6 уроки1-6 дни неделимне пока не надо учитывать учителей, лишь что б одновременно уроко не было.но куда мне добавить учителей? по идее надо к каждому уроку прописывать3 урок / русский яз / анна викторовнаи, не торопитесь, нельзя забывать, что классов может быть 11*3=33!!! шт.а создавать 33 массива бред.(да и мож в какой нить школе нет 4 класса..)хранить в одной бд? гм. я не представляю как.проблему объяснил, как смог, по-другому не смогу.
а если учесть, что одни и те же учителя(например, биология, химия, черчение) ведут уроки у 7,8,9,10,11...продожить? или сами поняли, что прийдется перебирать все классы, начиная с 7 да 10В, что б добавить биологию в 11А:) и это только для одной биологии!!
Помогите плиз, шестая делфя пару дней назад стала выдавать при запуске сообщение что "@sysutils@CheсkWin32Version точка входа в библиотеке rtl60.bpl не найдена"
Блин че только не делал, и сносил/переустанавливал, и переменные среды в винде менял, и реестр перекопал ничего не помогает.
Member
Статус: Не в сети Регистрация: 02.03.2005 Откуда: Владивосток
Подскажите как в имеющейся таблице Dbase программно добавить и удалить поле. А то скока не искал - только создание новых таблиц, а вот изменение существующих ненашел.
Member
Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
Здравствуйте, появилась пара вопросиков.
1. Нужно напечатать некий документ, предварительно подготовив его в соей программе (там и логотип и табличка с данными + еще разная фигня, но все расположено в определенном порядке с отступами и т.д.). Так вот, может кто-нибудь уже занимался чем-то подобным и может посоветовать наиболее подходящий для этого компонент, или способ.
2. Есть файл Excel, из него нужно прочитать пару столбцов, как это можно сделать?
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Member
Статус: Не в сети Регистрация: 02.03.2005 Откуда: Владивосток
Daemon писал(а):
Aleksoid1978 ну добавление допустим:
Код:
ALTER TABLE tbname ADD (tbfield int)
Удаление по аналогии.
Попробовал через TQuery1 - вылазит ошибка 'Error creating cursor handle' и портится табличка, поле создается но без указания типа(смог открыть тока через Database Desktop). Добавлено спустя 9 минут, 37 секунд
Lord_of_Darkness писал(а):
Здравствуйте, появилась пара вопросиков. 2. Есть файл Excel, из него нужно прочитать пару столбцов, как это можно сделать?
Ну можно так:
Код:
Uses ...OleServer, Excel97, ComObj, Variants
Var MsExcel: Variant; WorkBooks, WorkSheets:OleVariant
try MsExcel := CreateOleObject('Excel.Application'); except on E: Exception do begin ShowMessage('Невозможно запустить Microsoft Excel'+chr(13)+'Возможно программа не установлена!'); Exit; end; end; MsExcel.Application.Visible:=1; // 1-показать, 0 - непоказывать MsExcel.Application.Workbooks.Open(FileName:=FileName,UpdateLinks:=0); // UpdateLinks:=0 чтобы не запрашивал при открытии об изменении связей WorkBooks:=MsExcel.Application.Workbooks[1]; WorkSheets:=WorkBooks.Worksheets[1]; // и читать данные так Value:=WorkSheets.Cells[i, k].Value; // Где i-строка, k-столбец // Закрытие WorkBooks.Close(False); // Чтобы не задавал вопросов при закрытиии, если конечно не было изменений - тогда сперва сохранить MsExcel.Quit; VarClear(WorkSheets); VarClear(WorkBooks); VarClear(MsExcel);
Member
Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
Aleksoid1978 Спасибо.
To All Насчет вопроса №2, я думал, думал и ничего лучше юзания TWebBrowser не придумал. Т.е. я динамически создаю вэб страничку с нужными табличками, логотипами и т.д. и потом ее печатаю. Имеет такой способ право на жизнь?
Если да, то как писать HTML код прямо в компонент, а не в файл с последующей загрузкой.
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Member
Статус: Не в сети Регистрация: 02.03.2005 Откуда: Владивосток
Lord_of_Darkness писал(а):
Aleksoid1978 Спасибо. To All Насчет вопроса №2, я думал, думал и ничего лучше юзания TWebBrowser не придумал. Т.е. я динамически создаю вэб страничку с нужными табличками, логотипами и т.д. и потом ее печатаю. Имеет такой способ право на жизнь? Если да, то как писать HTML код прямо в компонент, а не в файл с последующей загрузкой.
Тогда лучше вместо TWebBrowser юзай TEmbeddedWB(можеш дать почту - вышлю), так там есть такая функция LoadFromStrings(TStrings) - загружает страницу из строк. Код можно создавать динамически или хранить в TMemo.
Member
Статус: Не в сети Регистрация: 14.08.2004 Откуда: Москва
Приветы Помогите пожалуйста разобраться с одной прогой. Вобщем пишу консольное приложение... Цель - считать текстовый файл, проанализировать строку и выдать тот или иной результат... Вобщем то всё работает кроме одного: выходной файл заполняется на 48 кб и всё, программа заканчивается... Почему так и как этого избежать, объясните пожалста...
если что - вот сам код:
Код:
program Project2;
{$APPTYPE CONSOLE}
uses SysUtils;
var a,s:widestring; i:integer; begin assign(input,'in.txt'); reset(input); assign(output,'out.txt'); rewrite(output); a:=''; while a<>'zxczxczxc' do begin readln(a); s:=''; for i:=1 to 15 do s:=s+a[i]; {Смотрю на первые 15 символов строки} if s='Date and Time: ' then {Если эти 15 символов дают 'Date and Time: ', то...} begin for i:=16 to length(a) do {... то выводи всю оставшуюся строку с 16 символа} write(a[i]); end else write(a); {Если нет, то выводи всё как есть} writeln; end; close(input); close(output); end.
Заранее пасиб Добавлено спустя 38 минут, 4 секунды ЗЫ строка а не принимает значение 'zxczxczxc' когда прога заканчивается.
Member
Статус: Не в сети Регистрация: 14.08.2004 Откуда: Москва
Daemon Бесполезно ... всё одно и то же... теперь пишу так:
Код:
program Project2;
{$APPTYPE CONSOLE}
uses SysUtils;
var a,s:widestring; i:integer; v,b:TextFile; begin assignfile(v,'in.txt'); reset(v); assignfile(b,'out.txt'); rewrite(b); a:='';
while a<>'zxczxczxc' do begin readln(v,a); s:=''; for i:=1 to 15 do s:=s+a[i]; if s='Date and Time: ' then begin for i:=16 to length(a) do write(b,a[i]);
end else write(b,a); writeln(b); end; closefile(v); closefile(b); end.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения