Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Делаем Утилиту d:) 
:(
    Опции темы
Kaskad
  Дата 26.1.2005, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 24.9.2004

Репутация: нет
Всего: 3



Мне нужно написать текстовую утилиту. Но...нужно загнать из командной сттроки параметры. КАК ЭТО СДЕЛАТЬ? smile
Ипользовал ARGC и ARGV. smile Но выдал ошибку в строке где появляется ARGV. А argc прорускает...




Код

program kyrsovik5;
type stroka=packed array[1..81] of char;
var s,w:stroka;
   i,k,from,zz,p,lol,e,q:integer;
   ch,fg:char;
   ar:array[1..30]of stroka;

function CharToInt(ch:char):integer;
var m:integer;
begin
case ch of
'1':m:=1;
'2':m:=2;
'3':m:=3;
'4':m:=4;
'5':m:=5;
'6':m:=6;
'7':m:=7;
'8':m:=8;
'9':m:=9;
'0':m:=0;
else m:=1;
end;{case}
CharToInt:=m;
end;



function wordnumber(str,word:stroka;from:integer):integer;
var nom,e,i,k:integer;
   sys:string;
begin
 k:=1;
 i:=from;
 nom:=0;
 repeat
   if s[i]=word[k] then k:=k+1 else k:=1;
   if (word[k]=' ')and(nom=0) then
                                 begin
                                 nom:=i-k+2;
                                 k:=1;
                                 end;
   i:=i+1;
 until s[i]='*';
 WordNumber:=nom;
end;

BEGIN
if ARGC=1 then writeln('Gde parametri? Exit...');

If ARGC=2 then from:=1;
              ARGV(2,w);

if ARGC=3 then begin
              ARGV(3,ch);
              from:=CharToInt(ch);
              end;

if not ARGC=1 then
begin{}
i:=0;
e:=0;
while not(ch='#') do
begin
   e:=e+1;
   repeat
   read(ch);
   i:=i+1;
   ar[e,i]:=ch;
   until  eoln(INPUT)or(ch='#');
   ar[e,i+1]:=' ';
   ar[e,i+2]:='*';
end;



 If e>=from then
 for zz:=from to e do
 begin
     p:=1;
     while not(ar[zz,p]='*') do
     begin
     s[p]:=ar[zz,p];
     p:=p+1;
     end;
     s[p]:='*';


     if wordNumber(s,w,1)<>0 then begin
                                  for lol:=1 to p-1 do
                                  write(s[lol]);
                                  end;
   end;
writeln;
Writeln('ending...');
readln;
end;{}
readln;

END.



ПОМОГИТЕ РАЗОБРАТЬСЯ! как загнать параметры через командную строку?


--------------------
Well come to America!
PM MAIL   Вверх
AntonSaburov
Дата 26.1.2005, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Такого рода функции очень сильно зависят от версии Паскаль, так что однозначно дать ответ сложно. На каком Паскале ты это хочешь сделать ?
PM MAIL WWW ICQ   Вверх
Kaskad
Дата 27.1.2005, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 24.9.2004

Репутация: нет
Всего: 3



smile
Офицално на GNU.
Пытаюсь сдать не официально smile , будут проверять на free.
Делаю дома на turbo.

smile smile smile

Как загнать из командной строки параметр не преложу ума... smile


--------------------
Well come to America!
PM MAIL   Вверх
maxim1000
Дата 27.1.2005, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



argv и argc, насколько я припоминаю, используются в C, C++
в Pascal, опять же насколько я припоминаю, используются ParamStr, ParamCount
если быть более точным, то эти переменные используются в Delphi, но вполне возможно, что они пришли из Pascal...


--------------------
qqq
PM WWW   Вверх
Snowy
Дата 27.1.2005, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: нет
Всего: 484



Никаких вполне возможно. В борландовских паскалях (включая object) везде ParamStr и ParamCount. Насколько мне известно и в других паскалях то же самое.
PM MAIL   Вверх
Romtek
Дата 30.1.2005, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 7.12.2004
Где: Холон

Репутация: нет
Всего: 4



Цитата
Variables
argc : LongInt;external name operatingsystem_parameter_argc
argc contains the number of command-line arguments passed to the program by the OS. It is not
available on all systems.
argv : PPChar;external name operatingsystem_parameter_argv
argp contains a pointer to a nil-terminated array of null-terminated strings, containing the commandline
arguments passed to the program by the OS. It is not available on all systems.

Код

for arg := 1 to argc do
 writeln (argv[arg]);


Кроме того:
Код

function CharToInt(ch:char):integer;
var m:integer;
begin
case ch of
'1':m:=1;
'2':m:=2;
'3':m:=3;
'4':m:=4;
'5':m:=5;
'6':m:=6;
'7':m:=7;
'8':m:=8;
'9':m:=9;
'0':m:=0;
else m:=1;
end;{case}
CharToInt:=m;
end;


Замени на
Код
function CharToInt (ch:char):integer;
begin
  CharToInt := ord (ch) - ord ('0');
end;
Так лаконичнее будет. smile

Код
if ARGC=1 then writeln('Gde parametri? Exit...');

If ARGC=2 then from:=1;
              ARGV(2,w);

if ARGC=3 then begin
              ARGV(3,ch);
              from:=CharToInt(ch);
              end;

замени на конструкцию CASE:
Код
case argc of:
1:
begin
end;

2:
begin
end;

3:
begin
end;

else
begin
end;

end;


'ending...' -> 'finishing...'

Это сообщение отредактировал(а) Romtek - 30.1.2005, 00:40
--------------------
Romiras HomeLab - материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и пр.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0950 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.