programistawpf Temat założony przez niniejszego użytkownika |
return(string) Dalczego prgoram nie zwrca znennej tesktowej ? » 2019-05-20 11:24:39 #include <iostream> #include <conio.h> using namespace std; int main() { std::string zmienna = ""; zmienna = system("vol"); //return(system("vol")); return(zmienna); } W konsoli jest wszytko ok , widzę: D:\workspace\wyraz\Release>wyraz.exe Wolumin w stacji D nie ma etykiety. Numer seryjny woluminu: 76A2-EA43
natomiast program jest wywoływany przez inna aplikację (Julia) i zwracana wartość to 0 niestety.
julia> cmd=Cmd(`wyraz.exe`) `wyraz.exe` julia> p=run(cmd,wait=false) Process(`wyraz.exe`, ProcessRunning) julia> p.exitcode 0
Myślę że problem jest z komendą return(zmienna) bo w program w postaci int main() { int a=60; return a; }
julia> cmd=Cmd(`zwrot.exe`) `zwrot.exe` julia> p Process(`zwrot.exe`, ProcessExited(60)) julia> p=run(cmd,wait=false) Process(`zwrot.exe`, ProcessRunning) julia> p.exitcode 60
zwraca liczbę jak trzeba . Jak zmienną tekstową wysłaś do zewnętrznej aplikacji ? Z góry dzięki za pomoc, pisze w C++ od wczoraj ! P. |
|
pekfos |
» 2019-05-20 12:32:32 Wartość zwracana z main() jest interpretowana jako kod błędu, wartość inna niż 0 oznacza błąd. Od biedy możesz tak zwrócić liczbę, ale tylko liczbę. Najlepszym sposobem na zwrócenie danych z programu jest wypisanie ich na standardowym wyjściu. W każdym normalnym shellu możesz standardowe wyjście z programu przekierować do pliku, na wejście innego programu, czy nawet do zmiennej w skrypcie. |
|
programistawpf Temat założony przez niniejszego użytkownika |
» 2019-05-20 18:14:19 Dopisałem taki wiersz ale to nic nie zmieniło. std::cout << zmienna ;
#include <iostream> #include <conio.h> using namespace std; int main() { std::string zmienna = ""; zmienna = system("vol"); std::cout << zmienna ;
}
Coś nie tak ? P. |
|
pekfos |
» 2019-05-20 20:42:01 Wszystko. Czego w ogóle oczekujesz po tym kodzie? Chcesz zwrócić to, co wypisuje vol? Do tego wystarczy samo system("vol"). Pomijając bzdury które wypisujesz później, powinno działać. O ile tylko nie upierasz się wciąż by szukać tego tekstu w kodzie błędu, który dla tego programu jest zawsze zerowy. |
|
nanoant20 |
» 2019-05-20 22:20:23 ROZWIĄZANIEprogram1 char output = system( "program2.exe" ); printf( "%s", output );
program2 string zmienna = "vol"; const char * command = zmienna.c_str(); system( command );
oczywiście pliki *.exe muszą być w tym samym katalogu a jeżeli chcesz przesyłać dane (komunikować się) pomiędzy okienkami to zainteresuj się winsock socket |
|
pekfos |
» 2019-05-21 13:45:27 Mhm. char output = system( "program2.exe" ); printf( "%s", output );
|
Bzdury, przeczytaj dokumentację system() i printf(). string zmienna = "vol"; const char * command = zmienna.c_str(); system( command );
|
Jaki to ma niby związek z tematem? ROZWIĄZANIE: https://docs.julialang.org/en/v1/manual/running-external-programs/If you want to read the output of the external command, read can be used instead:
julia> a = read(`echo hello`, String) "hello\n" |
|
|
nanoant20 |
» 2019-05-21 16:13:55 Jaki to ma niby związek z tematem? |
faux pas. Źle zrozumiałem, Myslałem, że chce za pomocą programu1, uruchomić i odczytać dane z programu2, nie zuważyłem, że chodzi o jakąś "aplikację (Julia)" - której nie znam. Osobiście bym skorzystał z socket Bzdury, przeczytaj dokumentację system() i printf(). |
O co ci człowieku chodzi? To, że funkcja biblioteczna system przekazuje nazwę polecenia lub nazwę programu określoną przez środowisko hosta, które ma być wykonane przez procesor poleceń. To wiem. To, że korzystając z funkcji biblioteki system, można uruchomić wszystkie polecenia terminalowe, które nasz system operacyjny pozwala nam wykonać. To też wiem. To, że tak wykorzystałem to polecenie, i narażam system. Jestem świadomy. It work. |
|
pekfos |
» 2019-05-21 16:50:45 O co ci człowieku chodzi? [..] To, że tak wykorzystałem to polecenie, i narażam system. Jestem świadomy. It work. |
char output = system( "program2.exe" ); printf( "%s", output );
Polecam przetestować na programie który nie kończy się z kodem 0. |
|
« 1 » 2 3 4 |