Nem érted a kérdsét. Önállóan futtatod a batch fájlt, vagy bele teszed az általad a multkor itt beadott, és általam azóta is használt execpro programocskába?
Egy külön batchfájlon belül tetted idézójelbe a parancssort és a bathfájlt hívtad meg az execpro-val? Mert ezt kipróbáltam, nem megy és így, idézőjelekkel persze direktben sem fut le a batchfile.
Én is csináltam egy .BAT fájlt, benne az, hogy C:\program files\java\jre1.6.0_07\bin\java.exe, és nem találta. Kicseréltem arra, hogy "C:\program files\java\jre1.6.0_07\bin\java.exe", úgy működött.
De ha a batchfájlt önállóan indítom el parancssorból, akkor lemegy gond nélkül, a benne (a pathban) levő szóközök ellenére. Csak az execpro-n belül van baja.
A "COMSPEC" nem bont ki semmit, a BAT-fájlodban van valami elcsépelve... Netán szóköz is van az elérési útvonalban? Mondjuk c:\Program Files\Özi Explorer\ mintára?
Hát az nem megy. Pedig nem is közvetlenül indul az OziExplorer, hanem egy ozihivo.bat-ot kellene indítani a COMSPEC-es mogoldással. Azon belül van a hosszú path-t tartalmazó parancssor, mert az ozi-t nem lehet egy fájlként áthelyezni a munkakönyvtárba. Viszont a COMSPEC kibontja a batchfájlt, így felszínre kerül a hosszú fájlnév és megjelenik az Ismeretlen programról szóló hibaüzenet. Az ozihivo.bat viszont önállóan indítva a parancssorból lefut rendesen és elindítja a világ másik végén levő echte widózos programot.
Ha viszont odatelepítem az Ozi-t a munkakönyvtárba, vagy a munkafájlokat az Ozi könyvtárba, akkor megy, csakhát ez nagyon csúnya megoldás.
És miközben sima parancssorban elfogadja a 9 betűs nevet is, addig ebben a "COMSPEC" kombinációban nem? Levettem a 9. betűt és mindjárt működik. Nagy vagy!!! Köszi.
A következő próbálkozás a komplett Özyexplorer program elindítása, de annak az exéjét (merthogy eleve fel van készítve parancssoros indításra) eleve ozyexp.exe-nek hívják.
Kipróbáltam, felemás eredménnyel. Az egyik méretes, echte DOS-os programmal, ami miatt az egészet elkezdtem, működik. A másik, a Windows clipboard fájlbaírására csinált (tehát nyilván windózos dolgokat használó) kis nyúlfarknyi programmal meg nem. Azt irja ki, hogy "rossz program vagy fájlnév",(ha a programot parancssor ablakban indítom), holott ott van vele azonos könyvtárban. Eközben a DOSERROR és az EXITCODE nulla, nyilván mert ahhoz az exe-fájlt előbb meg kellene találni, és meg kellene próbálni elindítani.
El akartam küldeni neked a clipboard-os változatot, nézd meg, mit tudsz megállapítani, de nem publikus a címed. Viszont magát a clipboard.exe programot (forrással együtt), le tudod tölteni innen.
mar miert ne lehetne? Van IP protokoll es szamos konnyen hasznalhato FTP progi DOS ala, egyszeruen exec-kel meghivod a megfelelo parameterekkel ellatott FTP programot....
Van a Freepascalnak magyar nyelvű leírása? Az új dolgok tanulásánál az a baj, hogy nem tudom angolul nem tudok elég jól, vagy tartalmilag értek valamit félre :-)
A 2. mondatban a Pascalt a Borland/Turbo Pascal fejlesztői környezetre értettem. Elnézést, hogy nem fogalmaztam szakszerűen. Azt hittem érthető. Tévedtem.
Miért ne lehetne Pascalban? Egyrészt a Delphi, az mi? Az egy fordítóprogram, fejlesztői környezet, de a benne levő nyelv neve továbbra is Pascal (ámbár kétségtelenül annak egy dialektusa, és nem mindenben szerencsés dialektusa, és a gyártó valóban igyekszik Delphinek hívni, de ez butaság).
De, mint tanult kartácsak itt már meg is jegyezték, ott van a Free Pascal. Egyrészt kompatibilis a régi Pascal-veriókkal, másrészt a Delphivel is, és ilyesmiket minden további nélkül meg lehet oldani vele, természetesen.
És mi lenne, ha a bácsi próbálna végre túllépni a Borland Pascalon? :) Jogos, hogy ilyen feladatokkal már nem célszerű Pascalban szenvedni. Irány a Delphi ;)
Borland Pascalban sztem sehogy.... (bocs, assembly hívásokkal valszeg meg lehet kérni a megfelelő windows megszakítást, és utána konvertálni, de sztem nem lenne a legkönnyebb feladat :) )
Azt kérdezném a bácsiktól és néniktől, hogy hogyan lehetne megoldani a következő feladatatot. Adva van egy netről is letölthető repülőtérkép, ahol van egy földrajzi alap és GPX fájl formájában a csak ritkán változó fedvények. (Én bütyköltem össze.)
Két fedvény viszont naponta változik, ez is letölthető .GPX formátumban, azt a térképre Ozi.plt trackké konvertáló prgram már megvan - szokásom szerint Borland-Pascalban. Hogyan lehetezt a programot kiegszítenazzal az elején, hogy automatikusan töltse le a netről a saját bemenő .gpx fájlját? A Borland Pascalból én ennél fontosabbakat sem tudok, de abban biztos vagyok, hogy netes letöltés nincs benne. (Hacsak nincs valami új könyvtári procedúra :-)
Nem Turbo Pascal, haenm Borland Pascal, az már valamivel jobb, csak nincs könyvem róla, most bújom az antikváriumot. A többi Pacaltól félek, mert a BP sokszor önmagával sem kompatíbilis, a két gépemen levő között verziós különbségek vannak a könyvtári unitokban is, és ami az egyik gépemen lefordul, az a másikon nem. Ez pedig egy nagyon bonyolult fordítási opciókkal teletűzdelt 10+ saját unitot használó háló, amit nem én írtam, hanem a fiam programozás záródolgozatnak, tehát beletett apait-anyait a strukturált programozás szépségeiből :-)
Úgyhogy egyetlen esélyem visszaállítani azt a konfigurációt, amiben utóljára jól lefordult, és azután apró lépésekkel belepiszkálni egy-egy unitba olyan helyeken, ami nem kavar be máshol.
A program egyébként windóz alatt fog futni, éppen amiatt kell, mert a DOS alatt megírt in-out utasításokra épülő fizikai sorosport kezelés az újabb gépeken már nem megy, mert nincsen is olyan :-(
Végülis úgy néz ki, hogy Teve olvtárs egyszerű javaslata a {$i+} átirányításról és az IOresult-ról eddig bejött, mióta ezt beletettem, nem veszett össze a két program a fájlon, pedig órákig futott a GPS-el az ablakban :-)
Szempont, hogy ősi Turbo Pascallal fordítsd, és tényleges DOS alatt fusson, vagy mehet Windows alatt valami mai fordítóval (konkrétan Free Pascal)? Mert Windows alatt azért van módszer annak eldöntésére, hogy egy fájlt megkapsz-e vagy sem, mert más is igényt tart rá...
Végső esetben a hibakereséssel is meg lehetne próbálkozni... első próbaként ezt próbáld meg futtatni: {$M $4000,$1000,$2000} program execprob; uses dos;
procedure proba (cmd, param: string); var dosexit,doserr:integer; begin SwapVectors; Exec (cmd, param); SwapVectors; dosexit:=DosExitCode; doserr:=DosError; WriteLn (cmd,' ',param, ': DosExitCode=', dosexit,' DosError=', do serr); end;
begin if (ParamCount=1) and (ParamStr(1)='recursion') then begin WriteLn ('Hopp , meghĽvtam nmagam!');
end else begin Proba (GetEnv ('COMSPEC'), '/C COPY execprob.pas exe cprob.dup'); Proba ('EXECPROB.EXE', 'recursion'); end; end.
Ebben van példa a COMSPEC használatára is, meg a direkt elérésre is.
Az is én voltam, és nem jött be az általad javasolt megoldás, a képernyő egyet villan (mintha DOS-ablakot akarna nyitni), azután nem történik semmi. Most a világ csúfjára kétfelé vettem a programot éss egy bat fájl először lefuttatja az elejét, azután az exec-el hivandó programot, azutána hátsó felét.
Most kezdek próbálgatni egy GUI generátort (AutoIT), hogy legalább pofája legyen a dolognak és ne a bat fájlhoz kelljen parancssorba paraméterként beadni az induló adatokat.
Köszi, majd ha már nem lesz más bajom, ezt is megcsinálom, az előbbiek miatt nem zavar. Az inkább, hogy a másik soros vonal kezelő program időnként fájrontot csinál, becsukja a soros vonalat és válogatott káromkodásokkal kiszáll. (Pl. ha a képernyő-takarékoskodó lekapcsolta a képernyőt én meg az egér megmozdításával vissza hozom.) De ezt már keresi az írója, valószínüleg a zavaró aktusok prioritása magasabb, mint a sorosvonal-olvasóé.
A mozgótérképes program nagyobb gond, mert annak az írója nem elérhető, és egy 48 000 soros agyonstruktúrált programról van szó. Az én egyféléves programozói tudásommal nem is látom át. A hályogkovács bátorságával nyulkálok bele a valamelyest átlátható részekbe.
Nem aggaszt. Semmi gond nincs, hogy kétszer jezi ugyanazt a poziciót. Viszont ha a kiolvasó program üres fájl talána, nem tdom, mi történne. Utána meg kiűríti a sorosvonal kezlő program.
Apropó, egy Borland Pascal program el tudna indítani valahogy egy másik, windózos programot? (Dotnet2 elemeket is használ.) Jelenlegi próbálkozásaim szerint még a DOS-os prograok sem indulnak el Exec-el.