Avatar billede logix Nybegynder
08. april 2003 - 16:34 Der er 4 kommentarer og
1 løsning

læs hvad der kommer på pipe'n via stdin

dir | min_delphi_app.exe

Hvordan?..

(dir er KUN et eksempel. Det er ikke en dir jeg skal have)

Jeg har hidtil brugt readln, men kan ikke finde noget om at få readln til at "time-ud". Dette betyder selvf. at hvis mit program står og venter på et specielt tegn som aldrig kommer, afsluttes programmet aldrig..

Nogen der har et kode eksempel?
Avatar billede jensfudge Nybegynder
09. april 2003 - 11:19 #1
Jeg har ingen anelse om hvordan man gør dette. Jeg har fået henvist følgende link:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/creating_a_child_process_with_redirected_input_and_output.asp

Det er noget C-kode der skal oversættes til et rigtigt sprog (Delphi)

Jeg leder også selv efter noget der kan dette. Men vil da i første omgang også stille mig tilfreds med at kunne finde ud af at køre dir > c:\entextfil.txt.

Du siger at det ikke er dir du skal bruge, men noget andet. Hvad er det andet? Jeg spørger fordi dir jo er en intern command.com kommando?
Jeg skal selv benytte et laboratorie program som er lavet i dos for mange herrens år siden.
Avatar billede logix Nybegynder
09. april 2003 - 14:28 #2
Jeg har fundet en masse eksempler på hvordan man kører et program sin sin egen applikation og redirector stdin og stdout fra denne "child" process..

Men det jeg skal kunne svarer eks. til at jeg vil lave en grep (hvis du kender den), eller et simpelt "dos" util som kan eks. køres fra et perl script..

eks: dir *.pas | grep "sysutils"
eller
dir *.pas | mail admin@mit-site.dk
(hvor det sidste eksempel sender en mail indeholdene dir-listen)

Jeg er unix administrator i et firma og er blevet sat på opgaven at lave nogle af unix værktøjerne til NT.. Så kunder på en NT server kan bruge perl scripts lavet til eks. unix eller linux el. lign..

dir er måske et dumt eksempel, da du altid er sikker på at dir kommandoen afslutter.. I det tilfælde virker readln og writeln fint.. Men hvis du nu laver et perl script som åbner en pipe til 'mail.exe' og derefter smider linie for linie data ud til 'mail.exe', men aldrig afslutter pga. en eller anden fejl, så afsluttes delphi consol app'en heller ikke hvis du bruger readln.. For readln venter på en EOF som aldrig kommer.. Og jeg kan ikke finde nogen måde at få den til at time-ud.. Ikke engang ved at lave en timer som laver HALT efter eks. 1 minut.. Resultatet kunne let bliver at der ender mere at køre flere hundrede kopier af eks. mail.exe, fordi de aldrig afslutter..
Avatar billede logix Nybegynder
09. april 2003 - 14:33 #3
Og det behøver ikke at være en intern command.com kommando.. Det kunne ligeså vel være 'net.exe view' eller hvilket som helst andet som outputter normalt. (via stdout).
Avatar billede logix Nybegynder
09. april 2003 - 14:36 #4
Og forresten ;)..

Hvis du selv ledte efter noget som kunne det microsoft beskriver i den artikel du henviser til, så er der et eksempel lige her i delphi:
http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_11667978.html
Avatar billede logix Nybegynder
21. august 2003 - 22:18 #5
Nå.. Den ga' aldrig bonus.. Så lukker vi bare igen...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester