• 7 odgovora
  • 3.699 pregleda
komunikacija 2 programa preko datoteke 14.07.2006. u 16:25 · pre 246 meseci #1
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)?
Re: komunikacija 2 programa preko datoteke 14.07.2006. u 17:21 · pre 246 meseci #2
Jesi siguran da prvi program zatvori svoj handle na datoteku prije nego sta pokrene drugi?

P.S. Jako glup princip.
Potpis

Q: HSP56 Micromodem nece da radi kompjuter ga prepozna a kad treba da se konektujem nece ne daje ni znaka zivota. u cemu je problem.

A: Crko mozda od grmljavine mozda od spanaca. Uglavnom baci ga u WC solju jako povuci vodu. Skupi 5e i uzmi drugi i ne postuj temu na pogresno mesto.
Re: komunikacija 2 programa preko datoteke 14.07.2006. u 21:26 · pre 246 meseci #5
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?
Potpis
I ♥ ♀

Ovaj post je zlata vrijedan!
Re: komunikacija 2 programa preko datoteke 15.07.2006. u 09:24 · pre 246 meseci #7
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)
Potpis
I ♥ ♀

Ovaj post je zlata vrijedan!
Re: komunikacija 2 programa preko datoteke 15.07.2006. u 15:54 · pre 246 meseci #8
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)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme