[ VBscout @ 14.07.2006. 16:25 ] @
Napravio sam dva programa: prog1 u VBA 6 i prog2 u C-u;
oni treba da komuniciraju preko (zajednicke) datoteke "temp.dat"
Oni samostalno rade kako treba tj prog1 stvori praznu temp.dat,
upise u nju sadrzaj(ulaz) neophodan za rad prog2, zatvori datoteku, i
pokrene prog2.exe(uradjen u C-u) ali tada prog2 nece da odradi posao
dok samostalno kad se pokrene(prog2) radi kako treba(izlaz tj. niz
znakova smesti u "temp.dat")
U cemu je problem(main nema argumenata)?
[ z@re @ 14.07.2006. 17:21 ] @
Jesi siguran da prvi program zatvori svoj handle na datoteku prije nego sta pokrene drugi?

P.S. Jako glup princip.
[ n1tr0 @ 14.07.2006. 18:49 ] @
Mogao bi da postavis code... Onda je lakse nego ovako da lupamo...
[ n1tr0 @ 14.07.2006. 18:50 ] @
Mogao bi da postavis code... Onda je lakse nego ovako da lupamo...
[ icobh @ 14.07.2006. 21:26 ] @
Citat:
VBscout: Napravio sam dva programa: prog1 u VBA 6 i prog2 u C-u;
oni treba da komuniciraju preko (zajednicke) datoteke "temp.dat"
Oni samostalno rade kako treba tj prog1 stvori praznu temp.dat,
upise u nju sadrzaj(ulaz) neophodan za rad prog2, zatvori datoteku, i
pokrene prog2.exe(uradjen u C-u) ali tada prog2 nece da odradi posao
dok samostalno kad se pokrene(prog2) radi kako treba(izlaz tj. niz
znakova smesti u "temp.dat")
U cemu je problem(main nema argumenata)?


Imaš problema sa putanjama! Na koji način pokrećeš prog2?
[ zaraza @ 14.07.2006. 21:35 ] @
ja bih isto kao i z@re pogledao da li prog1 pocisti sve za sobom posle koriscenja tog fajla...
[ icobh @ 15.07.2006. 09:24 ] @
Meni se događao isti problem i kažem kako sam ga riješio. Bio je fazon sa ShellExecute, jer mjesto na kojem sam palio program unutar ShellExecute bilo je c:\ a program se nalazio na d:\..., zato nije vidio datoteku koja je bila u njegovom folderu. Isto kao kad na Desktopu uradite RMB klik na shortcut ikonicu od nekog programa -> Properties -> Shortcut, pa ćete ovdje vidjeti nekoliko text boxeva među kojim: Target i Start In. Ako se ta dva polja razlikuju, tu nastaju problemi isto kao i kod ovog fazona: ShellExecute(Me.hwnd, vbNullString, "D:\prog2.exe" , vbNullString, "C:\", SW_SHOWNORMAL)
[ VBscout @ 15.07.2006. 15:54 ] @
Putanje su u redu jer su svi fajlovi u jednom folderu vec je problem u sldecem:
C program(kome je ulaz datoteka i izlaz datoteka) radi kako treba kada se pozove iz VB6
dok kada se sa istim kodom pozove iz VBA (Word-a)preskace svoju aktivnost
(u ovom slucaju kod rada sa datotekama)

na primer za kod u VBA(gde sam radio)
Sub Main()
Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(ActiveDocument.Path & "\temp.dat", ForWriting, True) 'dobice se prazan fajl
f.write "something" 'pisemo u datoteku
f.Close
'ActiveDocument.Path u VBA je u VB6 App.Path
Call Shell(ActiveDocument.Path & "\prog3.exe", 1) 'pozivamo C program
End Sub

a C program(prog3.exe) neka je sledeci
#include <stdio.h>
int main()
{
FILE *MyFile=fopen("temp.dat","w");
char *niz="nesto";

fprintf(MyFile,"%s",niz);

fclose(MyFile);
return 0;
}
sadrzaj datoteke bi trebao da bude "nesto",a u stvari je "something"(za poziv iz VBA)