Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Необходимо консольную утилиту для Windows

Автор: ShIvADeSt
Дата сообщения: 04.11.2003 05:42

Цитата:
Windows

Извини но их как минимум две разновидности NT и 9х. Причем, сервис на одной не есть сервис на второй. Пиши конкретно. Какая винда. Если не хочешь, чтобы окна появлялись, то в самой Дельфи можно прописать ShowMainForm:=False и юзверь никогда окна не увидит. Так что если не сложно ОДИН раз опиши все услвоия, а не так как у тебя, здесь я то забыл добавить, здесь то. Не обижайся, но блин каждый раз смотреть по топику в посиках того, чего не хватает тяжко .
Автор: exMIB
Дата сообщения: 04.11.2003 18:11
UncoNNecteD
ShIvADeSt
Хорошо, я понял, да как службу прогу действительно, наверное, не получиться запустить, как тогда параметр передавать ей, с этим надо подумать.
А пока надо просто скрыть её запуск на панели задач и открытие окна. Я вообще-то скрывать могу с помощью одной спец.утилиты, я про неё в теме про батники писал, в принципе для начала пойдет, просто может у кого есть другие варианты.

Вообщем со скрытием пока можно подождать, сейчас главное решить как можно передавать в параметрах "запятые" и знаки "-" и "+".

Добавлено
ShIvADeSt

Цитата:
Не обижайся, но блин каждый раз смотреть по топику в посиках того, чего не хватает тяжко

Шапку я поправил
Автор: UncoNNecteD
Дата сообщения: 04.11.2003 18:55
Вообще то чтоб программа считала параметр одним целым, надо юзать двойные кавычки.

prog.exe "some trash ,.+0- here"

вот.

Добавлено
Во, надыбал.
Есть API функция - GetCommandLine()
Возвращает полную строку запуска, со всеми запятыми и пробелами.
Просто отрезай название файла с путем и получай чистые параметры в неизменном виде.
Автор: exMIB
Дата сообщения: 04.11.2003 19:22
UncoNNecteD

Цитата:
Вообще то чтоб программа считала параметр одним целым, надо юзать двойные кавычки.


В случае с бат-файлами двойные кавычки - это понятно, но ведь кавычки тоже сохраняются в созданном txt-файле


Цитата:
Есть API функция - GetCommandLine()
Возвращает полную строку запуска, со всеми запятыми и пробелами.
Просто отрезай название файла с путем и получай чистые параметры в неизменном виде.


Это, конечно, замечательно, но у меня плохова-то с программированием
Автор: ShIvADeSt
Дата сообщения: 05.11.2003 00:25

Цитата:
Есть API функция - GetCommandLine()

А есть фунцкия ParamStr(i) где и нужный тебе параметр строки. Н-р:
ParamStr(0) это польный путь к испольняемому файлу типа C:\Winnt\Explorer.exe
если прога запущена как exp.exe -qq
то после вызова a:=paramstr(1) a будет иметь значение -qq. Так как кавычки будут стоять только в начале и в конце то их можно обрубить так
Delete(a,1,1);
Delete(a,Length(a),1);
как в С я не знаю Ну не очень я его люблю!!! Только не будем спорить о том что лучше. Я просто объяснил почему Дельфийское описание.

По поводу скрытности. Если у экзешника нет формы, то ее и прятать не надо. Я на дельфи делаю так. Создаю новый проект. Remove From Project: Unit1. Потом в Project Source удаляю uses Forms А так же все связанное с Application. Между begin и end вставялю нужный мне код. После запуска никаких форм не появляется! Код тебе уже почти весь привели. Надо его только собрать и скомпилировать\отладить
Автор: UncoNNecteD
Дата сообщения: 05.11.2003 07:09
ShIvADeSt
Если параметр не в кавычках надо делать так -
GetCommandLine-ParamStr(0) (гипотетически )
Он же говорит, что кавычки не всегда возможны и надо пихать параметр так как есть.
Автор: ShIvADeSt
Дата сообщения: 05.11.2003 07:38

Цитата:
GetCommandLine-ParamStr(0)

Либо так
qq:=GetCommandLine;
q:=ParamStr(0);
Delete(qq,1,Length(q));
Это практически. )) Ну и соотвественно убирать пробелы вначале.
Автор: Tropin
Дата сообщения: 05.11.2003 12:00
exMIB
ShIvADeSt
UncoNNecteD
GetCommandLine отличается от ParamStr(0) тем, что во втором случае выводится полный путь к исполняемому файлу... поэтому какие тут могут быть сравнения напрямую...

Добавлено
и еще как вам такой вариант???

Код: program Project1;

//{$APPTYPE CONSOLE}
// Чтобы не мелькали окна откажемся от STDOUT :)
var
F: Text;
S: String;
p: Byte;

begin
S:=String(CmdLine);
if S[1] = '"' then begin
Delete(S,1,1); // удаляем кавычку
Delete(S,1,pos('"', S)); //
if Length(S) > 1 then
Delete(S,1,1) // удаляем пробел
else
Halt(0); // параметров нет
end else begin
p:=pos(' ', S);
if p > 0 then
Delete(S, 1, p)
else
Halt(0); // параметров нет
end;
AssignFile(F, 'log.txt');
{$i-}
Append(F);
If IOResult <> 0 then Rewrite(F);
{$i+}
writeln(F, S);
CloseFile(F);
end.
Автор: exMIB
Дата сообщения: 06.11.2003 21:35
У кого под рукой есть Delphi не выше 5 версии, может закините в форму или как-там правильно, а то у меня вопросы разные возникают, что и куда, а чтобы флейм не разводить так было бы лучше и сюда закинуть исходники http://www.konfa.ru/cgi-bin/filex.cgi?up
Автор: UncoNNecteD
Дата сообщения: 06.11.2003 23:15
Tropin

Цитата:
GetCommandLine отличается от ParamStr(0) тем, что во втором случае выводится полный путь к исполняемому файлу... поэтому какие тут могут быть сравнения напрямую...

Нет чувак, GetCommandLine тоже выводит полный путь и еще параметры.
ParamStr - использует GetCommandLine для определения параметров, в том числе ParamStr(0). Так что все в норме тут.
Автор: Vacx
Дата сообщения: 07.11.2003 08:09
На vb всё работает (по ТЗ). Что нужно код|exe ? И нужноли?
Автор: exMIB
Дата сообщения: 07.11.2003 10:07
Vacx
Хотя с VB я не работал, но давай и код и EXE, интересно посмотреть.
Чуть выше я дал ссылку куда их можно залить
Автор: Vacx
Дата сообщения: 08.11.2003 05:12
to exMIB
http://www.konfa.ru/public/dload/filex/p.zip
P:5eEF6
вроде так.
Автор: Tropin
Дата сообщения: 10.11.2003 10:47
UncoNNecteD

Цитата:
Нет чувак, GetCommandLine тоже выводит полный путь и еще параметры.

Не хочу оффтопить, но имхо, у тебя другая дельфя...
вот вырезка из system.pas функции ParamStr(Index: Integer):
Код:
...
if Index = 0 then
SetString(Result, Buffer, GetModuleFileName(0, Buffer, SizeOf(Buffer)))
else
...
Автор: exMIB
Дата сообщения: 10.11.2003 22:02
Vacx
Это просто ЗДОРОВО!
Я очень РАД!
Твоя программка делает всё что я хотел!
Огромнейшее тебе спасибо!

А также большое спасибо всем, кто участвовал в дискуссии по данной теме!
Была бы возможность всех бы пригласисил на
---
Автор: Vacx
Дата сообщения: 11.11.2003 03:33
Рад что помог.

Страницы: 12

Предыдущая тема: VB: Написание программы для работы с MySQL-базой


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.