Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17


Invoking a DOS program from Delphi v3

Posted on 1998-02-18
Medium Priority
Last Modified: 2010-04-04
  I asked this question before and Zitt gave an answer which didn't work. I'm re-asking it:
  In v1 I used the following routine which worked well when invoking a DOS app. In my app I must wait for the DOS app to complete before proceeding...this method worked well:

Function WinExecAndWait(Path : string; Visibility : word) : word;
  InstanceID : THandle;
  PathLen : integer;
  { inplace conversion of a String to a PChar }
  PathLen := Length(Path);
  Path[PathLen] := #00;
  { Try to run the application }
  InstanceID := WinExec(@Path,Visibility);

  if InstanceID < 32 then { a value less than 32 indicates an Exec error }
     WinExecAndWait := InstanceID
  else begin
    until Application.Terminated or (GetModuleUsage(InstanceID) = 0);
    WinExecAndWait := 32;
end; that I am in v3, I see the "GetModuleUsage" command is not present. All I want to do is invoke a DOS app and wait for it to complete. The v3 help files are so horrible and cryptic that I can't understand a word they're talking about! Read a little about some "CreateProcess" command but couldn't make heads or tails of it! Any suggestions?

  Also, on another note, my app in v1 used a TabbedNotebook with 10 tabs - with the TabsPerRow property set to 5 so there were 2 rows of 5 tabs each...nice and neat. I notice in v3 that the TabsPerRow property doesn't strings out all 10 tabs in one after another...really ugly. Is there any way to solve this without me having to resort to the new PageControl component of v3...I have a LOT of controls on my old TabbedNoteBook and it would be hell to try and move them all over to a PageControl component.

Hope you can help!

  Shawn Halfpenny
Question by:aztec
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 4

Accepted Solution

Matvey earned 200 total points
ID: 1359540

I think I tryed to help you with the TabsPerRow some time ago, and some other things. Was that you?
Try to see your form in text mode and understand how the both of your tabbet components work, and then try to change yours to the working one in D3 in that text mode and then in the form code.
:) Hope it works!

I sent you a component for executing programs, tt will work for DOS app too!

Good luck!

Author Comment

ID: 1359541
Hello matvey...
   You write:

I think I tryed to help you with the TabsPerRow some time ago, and some
                      other things. Was that you?
                      Try to see your form in text mode and understand how the both of your
                      tabbet components work, and then try to change yours to the working one in
                      D3 in that text mode and then in the form code.

..I don't understand what you mean by this. Please explain more clearly.

Shawn Halfpenny

Expert Comment

ID: 1359542
When you click with the right mouse button on you form you have an option like "view as text" or something like this. Try to understand, within that text mode for your form, how the components are arranged in this tabbed controll. Then create a new project and try to understand the same for the new control taht comes with D3 (the one that works), and then try to exchange them within the text mode and save.

If you want then send your form to me ( -glad if I can help!

Did you recieve the component?
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.


Author Comment

ID: 1359543
  It appears that even the new PageControl component (which is apparently supposed to take the place of TabbedNoteBook in Delphi 1) of Delphi 3 also does not have a property to set Tabs Per Row. There is no need for me to send you my form can test this easily yourself - just create a TabbedNoteBook with 6 tabs and 3 TabsPerRow. Then check the text source of the form. Then create a PageControl with 6 Tabs. You'll see there's no place in the PageControl component to specify Tabs Per Row. It appears to be a bug in Delphi 3 where it does not correctly handle the TabsPerRow property of the old TabbedNoteBook component.

   Shawn Halfpenny

Expert Comment

ID: 1359544
Do you think we should try to fix this component?

I have an idea! how about trying to replace the one we got with D3 with the one from D1 uh?

I'll try it.

Reply soon...

Author Comment

ID: 1359545
Any luck Matvey?


Expert Comment

ID: 1359546
:-( Sorry pal, there is no source for it in D1 (check maybe you have), but I think I understand why it doesn't works in D3 - the TabsPerRow property isn't used at all!!! I mean everything ignores it, and the tabs are aligned with a method that doesn't treats this property at all!!!

The last resort is to contact Borland, I think.

I'm really sorry but I can't change the component now because there is no even the source of the original D1 version of this control, so it's really not easy to "invent the wheel again".

Hope Borland can help you! -good luck!

Author Comment

ID: 1359547
Ok Matvey...thanks for trying I will contact Borland...meanwhile give yourself an 'A' for effort (and for the component you sent me) !

   Shawn Halfpenny

Expert Comment

ID: 1359548
Hey aztec! -thanks for some points!

Tell me when Borland answeres, OK?

my email:

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
Want to learn how to record your desktop screen without having to use an outside camera. Click on this video and learn how to use the cool google extension called "Screencastify"! Step 1: Open a new google tab Step 2: Go to the left hand upper corn…
Suggested Courses

722 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