Member
Статус: Не в сети Регистрация: 09.12.2005 Откуда: Москва
Товарищи, есть вопрос:
Создаётся анкета (текст а рядом в с ним циферка ставится), можно ли сделать так, чтоб программа сохраняла отчёт в формате excel?
Нужно чтобы она банальна написала номер строки и цифру введённую пользователем в программе.
Это возможно?
_________________ CPU: Core i7 4770k (3.5Ghz@4.3Ghz, vCore 1.2)+Archon SB-E X2 Mobo: ASUS Z87 Pro (1205) Mem: 2x Corsair 1866Mhz Video: MSI N660Ti PE 2GD5@1070/7000
Member
Статус: Не в сети Регистрация: 13.02.2004 Откуда: Чехия
Добрый день всем. У меня такой вопрос:
Есть програмка написанная в Делфи которая заполняет данными лист в Экселе.
Купили новый комп с Офисом 2007. При попытке использовать ExcelApplication1.Workbooks.Open(..)
возникает ошибка типа "Old type...".
Не подскажите как лечится? Вариант установить старый офис не предлагать.
ExcelApplication1.Workbooks.Add(Fname,xlLCID) работает почему-то...
Идеальным бы было решение чтобы работало как в Office97-2003 так и в 2007
_________________ Лучше иметь пузо от пива, чем горб от работы.
George J Не уверен, что дельфя вообще поддерживает 2007, т.к. там компоненты токмо под 2000/XP. Как вариант можно на сайте борланда порыться, может там уже выложили.
ЗЫ тоже возникала подобная проблема, но решилась она путем сноса нафиг 2007 и установки 2003, так что думай
Member
Статус: Не в сети Регистрация: 13.02.2004 Откуда: Чехия
Mike3000 Первое что сделал - пошел к админу чтоб переустановил Офис...
А он говорит что ОЕМ версии офиса сейчас только 2007.. Завтра будет звонить в MicroSoft если можно "откатиться" на Офис 2003.. (Деньги за 2007 уже заплачены, а "пиратку" ставить боится.)
_________________ Лучше иметь пузо от пива, чем горб от работы.
Member
Статус: Не в сети Регистрация: 13.02.2004 Откуда: Чехия
Доброго дня всем. Звонили мелкомягким... Сказали что откатится на старый офис НЕЛьЗЯ!
И еще вопрос/уточнение: работаю в Делфи 5, читал что Делфи 2007 поддерживает Висту и Офис 2007. Если перейти на Делфи 2007 код предется переписывать?
_________________ Лучше иметь пузо от пива, чем горб от работы.
>>Из бухгалтерии принисли задачку: >>Некоторое число заканчивается на "2". Если ее переставить на >>первое место, то число удвоится. Какое число было >>изначально? >>Работа IT отдела была парализована! Напрочь!!!
А чем тут парализовывать то? 105263157894736842 210526315789473684 - оно же, но удвоенное
эт ты канешна так постебался да? по моему 12 и 24 попроще будет...
далбайоп, ты четать/щетать умееш? 12 -> 21, а не 24. для тебя, наверно, проще, если мозгов на большее не хватает
Как прочитал сразу решил проверить на практике Установил Delphi и написал такой код в обработчике кнопки:
Код:
procedure TForm1.Button1Click(Sender: TObject); var k, i, x1, x2: int64; z, y: integer; s, sx: string; begin i:=12; k:=0; while True do begin x1:=i; s:=IntToStr(x1); sx:='2'; y:=Length(s); for z := 2 to y - 3 do begin sx:=sx+s[z]; end; sx:=sx+s[1]; inc(k); i:=i+10;
if k mod 500000=0 then begin label2.Caption:=IntToStr(k); Application.ProcessMessages; end;
if StrToInt64(sx)=2*StrToInt64(s) then break; end; edit1.Text:=sx; end;
Небольшое пояснение:
Начинаю с 12
Кол-во проверок ставлю в 0
Начинаю баальшой цикл
Все следующие операции сводятся к простому действию
Переставляю "2" на первое место и все число смещаем соответсвенно.
Если проверка прошла, выхожу из цикла и пишу полученное число.
Чтобы прога не зависла, юзаю Application.ProcessMessages.
Это чудо считает просто _крайне_ медленно.
Можно как-то ускорить обработку?
Если перейти на Делфи 2007 код предется переписывать?
Нет, переносимость кода превосходная. Другое дело если ты используешь набор сторонних компонентов, поддержка, которых в D2007 не декларирована. Например, некоторые компоненты из набора TMS
Member
Статус: Не в сети Регистрация: 11.07.2004 Откуда: Воронеж
Xupyp1 ИМХО решения нет, так как в этом числе первая цифра должна быть 1 иначе число будет даже меньше чем изначальное.
Далее получается что последнея цифра после перестановки становится 1, и тут!!!!! вспоминаем признак делимости на 2, с учетом выше указанного ограничения, удвоенное число никак не получится.
то есть допустим: 4545454552, переставляем: 2454545455 получается 2454545455 < 4545454552 ну и так далее. это первое ограничение.
теперь 12345345432, меняем: 22345345431 получаем единицу на конце. причем ВСЕГДА!!! следовательно удвоенное число невозможно.
То есть ускоряю те решение: Забей, чувак, решения нет
задали тут на Делфи состряпать что-то вроде браузера.
Вообщем задание такое: по нажатию на кнопку прога лезет на Яндекс и оттуда выдирает погоду.
....в делфи есть элемент WebBrowser. С ним и работаю. Вообщем как из него получить код страницы(я имею ввиду html код)? И запихнуть обратно?
Или предложите ещё варианты решения этой задачи..а то я в Делфи ничего не умею
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Alek(S) Сотри в сторону интерфейса WebBrowser.Document
К примеру можно так
HTMLDocument:=InfoBrowser.Document as IHTMLDocument2;
и у HTMLDocument уже есть почти все нужные свойства.
Товарищи ! Кто знает где можно найти исходники на дэлфи по статистическим методам анализа или поиска текста ещё называют tf-idf .
Или подскажите сайты по данному методу , описания , короче буду рад любой информации .......
Заранее благодарен !
Вот шлепнешь свою программу неожиданно для нее самой, а значек из трея не пропадает. Как при следующем запуске, например этой же программы, обновить трей?
В тырнете нашел не очень элегантный способ - пробег курсором по всем значкам, но хочется как-то покрасивше... Добавлено спустя 3 минуты, 9 секунд
Код:
Shell_NotifyIcon(NIM_DELETE,@nidata);
, где nidata: TNotifyIconData; ессно, не прокатывает, т.к. в структуру nidata надо зашивать хэндл текущей программы, например
Код:
nidata.Wnd:=Application.MainForm.Handle;
Добавлено спустя 5 минут, 27 секунд
Mike3000 писал(а):
пробег курсором по всем значкам, но хочется как-то покрасивше...
да и вообще, боюсь, что всякие касперы/аутпосты начнут вопить о том, что моя программа де эмулирует нажатия кнопик и пр., что тоже не очень гуд
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
Есть на форме TRichEdit, в него загружаю rtf-файл посредством Lines.LoadFromFile(...) . Есть небольшой косяк - между абзацами(тоесть строками разделёнными "энтером") наблюдается огромное растояние. В то же время при просмотре в WordPad'e всё выглядит красиво:
#77
Member
Статус: Не в сети Регистрация: 05.01.2003 Откуда: Москва Фото: 2
Люди, есть вопрос, надо ответом уже бьюсь часа три.
Есть ActiveX компонент. Обычно раньше импортировал и появлялась иконка в закладке ActiveX. Все было хорошо.
Сейчас же просто импортировал, откомпилировал и все. Нигде компонент найти не могу.
если данный компонент подгрузить в html, то все работает. Работает в VB - проверил. Но нужно обязательно вывести его на форму в Дельфе.
Стало быть - что делать и как дальше жить ?!
_________________ Устав традиций нужно соблюдать, Хоть и не раз ответят вам отказом: Конечно, баба может и не дать, Но предложить ты ей всегда обязан!
Member
Статус: Не в сети Регистрация: 01.10.2006 Откуда: Караганда, KZ
Доброго времени суток. Возникла проблема. Вызываю запуск 3D Mark 2006 1.10 след. процедурой:
Код:
function Tfrm_Main.TestRunner(const FileName, Params: String; const WinState: Word):boolean; var StartInfo: TStartupInfo; ProcInfo: TProcessInformation; CmdLine: String; begin CmdLine := '"' + Filename + '" ' + Params; with StartInfo do begin FillChar(StartInfo, SizeOf(StartInfo), #0); cb := SizeOf(StartInfo); end; if FileExists (filename)=false then ShowMessage('Не найден файл '+filename) else begin Result := CreateProcess(nil, PChar(String(cmdline)), nil, nil, false, CREATE_DEFAULT_ERROR_MODE or REALTIME_PRIORITY_CLASS or CREATE_NO_WINDOW, nil, PChar(String(ExtractFilePath(Filename))),StartInfo,ProcInfo); if Result=true then begin WaitForSingleObject(ProcInfo.hProcess, INFINITE); { Ожидаем завершения приложения } { Free the Handles } CloseHandle(ProcInfo.hProcess); CloseHandle(ProcInfo.hThread); end; end; end;
В качестве пераметров передаются путь к 3д марку, и параметры запуска, которые генерятся тут:
Код:
function Tfrm_Main.VideoParam:String; var tmp3d:String; i:integer; begin i:=0; tmp3d:=''; if rb_Resolution1280.checked = true then tmp3d:=tmp3d+'-res=1280x1024 ' else if rb_Resolution1024.checked = true then tmp3d:=tmp3d+'-res=1024x768 ' else if rb_resolution800.checked = true then tmp3d:=tmp3d+'-res=800x600 ' else if rb_resolution640.checked = true then tmp3d:=tmp3d+'-res=640x480 '; tmp3d:=tmp3d+'-sm2all -featureall -ps -vssimple -vscomplex '; if cb_Enable3DCPU.checked = true then tmp3d:=tmp3d+'-cpuall '; if cb_EnableAA.checked = true then tmp3d:=tmp3d+'-aa=2 '; if cb_ShModel.Checked = false then tmp3d:=tmp3d+'-sm3all -hdr2 -shaderparticle -perlinnoise '; tmp3d:=tmp3d+'-nosysteminfo results.3dr'; VideoParam := tmp3d; i:=Length(tmp3d); end;
Проблема такая, что если в системе WinXPSP2 установлен Ie7, то происходит вот что.
Если система только что загружена, и 3D Mark (v1.10) еще не запускался сиим образом, то при запуске, сам процесс 3dmark06.exe зависает. Завершаешь 3d mark, запускаешь повторно - все ок... Если убрать из параметров results.3dr, то 3d mark 06 всегда стартует нормально. Если убрать IE7, то тоже нормально все. И под вистой 32/64 Тоже. Т.е. получается, что процесс 3d mark зависат при создании results.3dr-файла. Для этого 3D Mark использует xml. Как вылечить? Идеи есть?
Member
Статус: Не в сети Регистрация: 01.10.2006 Откуда: Караганда, KZ
При использовании ShellExecute все нормально И если закомментить
Код:
if Result=true then begin WaitForSingleObject(ProcInfo.hProcess, INFINITE); { Ожидаем завершения приложения } { Free the Handles } CloseHandle(ProcInfo.hProcess); CloseHandle(ProcInfo.hThread); end;
if ShellExecuteEx(@ShellInfo) then begin Edit3.Text:='Working'; FHInstance:=ShellInfo.hInstApp; FProcessHnd:=ShellInfo.hProcess; repeat Application.ProcessMessages; GetExitCodeProcess(FProcessHnd,ExitCode); until (ExitCode<>still_Active);
Привет всем! Создаю базу данных в Delphi 7 (paradox). В программе есть несколько форм, на которых расположенны базы данных DBGrid. У каждой быз данных отдельный файл .db . В каждой базе поля одинаковые (например кол-во, сумма), но значения в для этих полей разные. На главной форме должна быть общая база. Нужно, к примеру, ячейку A(2,5) на форме t1 просуммировать с ячейкой A(2,5) на форме t2 и A(2,5) на форме t3 и вывести результат суммы на главную форму в ячейку A(2,5). Каким образом это реализовать?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения