Invoking a DOS program from Delphi v3

Posted on 1998-02-18
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 50 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?
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!


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: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering 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

Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
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…
Monitoring a network: why having a policy is the best policy? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the enormous benefits of having a policy-based approach when monitoring medium and large networks. Software utilized in this v…
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increased…
Suggested Courses
Course of the Month7 days, 6 hours left to enroll

623 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