Solved

how to my applicattion accept parameters..?

Posted on 2004-08-16
11
291 Views
Last Modified: 2010-04-05
i need eexecute my app like this
   MyApplication.exe [servername][databasename] [username][password] how..?

hot to recognize this paremters into MYApplication.exe? and how to accept this parameters?...
0
Comment
Question by:ThoseBug
11 Comments
 
LVL 1

Accepted Solution

by:
Chadak earned 100 total points
ID: 11811485
Hi

   just use paramcount which return the number of param that was used
and use paramstr(0) to get the first parameter etc...
There are the 2 method you need to work with parameters

Chad
0
 
LVL 4

Expert Comment

by:LMuadDIb
ID: 11811843
example code:
----------------

{ TODO -oUser -cConsole Main : Insert code here }

    sc:=['/','-','|'];
    sCmdLn := lowercase(CmdLine);
    { If help is needed display help & example, and then exit }
    if (pos('help',sCmdLn) > 0) or (pos('?',sCmdLn) > 0) then
    begin
        WriteLineOutPut('Application called with HELP parameter!');
        WriteLineOutPut('EXAMPLE:');
        WriteLineOutPut('   command format: appname [options]');
        WriteLineOutPut('   Explanations of usage are as follow:');
        WriteLineOutPut('   -o       : < Output Data to text file >');
        WriteLineOutPut('Example:');
        WriteLineOutPut('COPYRIGHT ' + #169 + ' 2004 Coder');
        exit;
    end;
    sCurDir :=  ExtractFilePath(ParamStr(0));  {Store the dir where your app was executed from}
    if ParamCount > 0 then  { Command line arguments were passed, parse them }
    begin  
    { [servername][databasename] [username][password] }          
    { -s <servername> -db <databasename> -u <username> -p <password> }
        for i:=1 to ParamCount do
        begin
            if ParamStr(i) = '-s' then
              servername := ParamStr(i + 1);
            if ParamStr(i) = '-db' then
              databasename  :=  ParamStr(i + 1);
            if ParamStr(i) = '-u' then
              username  :=  ParamStr(i + 1);
            if ParamStr(i) = '-p' then
              password  :=  ParamStr(i + 1);
        end;
    end;
    try
      Execute;
    except
      WriteLineOutPut('ERROR!');
      exit;
    end;

----------------
hope this helps.
0
 
LVL 22

Expert Comment

by:Mohammed Nasman
ID: 11811936
Hello

Just quick sample to show the no of parameters passed to your application and each one with it's value

procedure TForm1.FormCreate(Sender: TObject);
var
 I : Integer;
begin
  ShowMessage('Total Parameters passed = ' + IntToStr(ParamCount));
  for I := 1 to ParamCount do
    ShowMessage('Param No ' + IntToStr(I) + ' Value = ' + ParamStr(I));
end;


HTH

Regards,
Mohammed
0
 
LVL 3

Author Comment

by:ThoseBug
ID: 11812778
sorry for the ignorance..but where i can do this code and how to call from antoher delphi program...when i try to execute from the run project1.exe someparameter i have a error...
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 4

Expert Comment

by:LMuadDIb
ID: 11815100
My example is for a console application, you didnt state if your program used a gui or not.
but my example can easily be adjusted to fit.

if you want to run your project from the ide you need to pass the parameters.
goto menu "Run" "Parameters"
insert some test parameters into the parmaeters field:
{ -s <servername> -db <databasename> -u <username> -p <password> }

-s 127.0.0.1 -db dbname -u myname -p pass

only other way to test is from the cmd prompt manually.
0
 
LVL 12

Expert Comment

by:Ivanov_G
ID: 11815102
If you program is called MyProgram.exe
you can run it with parameters typing:
"MyProgram db=testdb user=john pass=abcd"

from Delphi you set the parameters in Run / Parameters

from inside your application you can access the WHOLE command line with CmdLine function - it returns you a string.
you can also access parameters like this

  var
    param1  : String;
  begin
    param1 := ParamStr(1);

  in this case param1 = 'db=testdb'

  ParamCount returns you the number of parameters.
  ParamStr(0) - this is the file full name. The same as Application.ExeName.

  You can handle the command line parameters in OnCreate of the main form.

  Hope this helps
0
 
LVL 3

Expert Comment

by:MikProg
ID: 11817820
The best way is to use TStringList to hold program parameters

        ProgramParams:=TStringList.Create;
        for i:=1 to ParamCount do
        begin
            ProgramParams.Add(ParamStr(i);
        end;
// here you can assign defult values to parameters not assigned from command line
       if ProgramParams.Values['-db']='' then
            ProgramParams.Values['-db']:=DefaultDatabaseName;
// use these parameters
        servername := ProgramParams.Values['-s'];
        databasename  :=  ProgramParams.Values['-db'];
// so on so forth ...

// now you can save last run parameters
       ProgramParams.SaveToFile('ProgramName.cfg');
       
0
 

Expert Comment

by:krypto2000
ID: 11818753
Just make a new applicacation with a listView with two columns and viewStyle=report

The most important think is to know the ParamStr and the ParamCount variables...

Here is the procedure :

procedure TForm1.FormCreate(Sender: TObject);
var i: integer; AddedItem: TListItem;
begin
   for i := 1 to ParamCount do
      begin
      AddedItem := ListView1.Items.Add;
      AddedItem.Caption := 'Param[' + IntToStr(i) + ']';
      AddedItem.SubItems.Add(ParamStr(i));
      end;
end;
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Convert Jpg /PNG To GIF 5 118
Magic Software info 18 124
LAN or WAN ? 11 81
I want to use librsync in my Delphi backup application. 3 25
Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
Concerto provides fully managed cloud services and the expertise to provide an easy and reliable route to the cloud. Our best-in-class solutions help you address the toughest IT challenges, find new efficiencies and deliver the best application expe…

929 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now