Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

return(string) Dalczego prgoram nie zwrca znennej tesktowej ?

Ostatnio zmodyfikowano 2019-05-23 21:08
Autor Wiadomość
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.
P-174652
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.
P-174653
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.
P-174654
pekfos
» 2019-05-20 20:42:01
Coś nie tak ?
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.
P-174655
nanoant20
» 2019-05-20 22:20:23
ROZWIĄZANIE

program1
C/C++
char output = system( "program2.exe" ); //wywoluje program 2
printf( "%s", output );

program2
C/C++
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
P-174658
pekfos
» 2019-05-21 13:45:27
ROZWIĄZANIE
Mhm.
C/C++
char output = system( "program2.exe" ); //wywoluje program 2
printf( "%s", output );
Bzdury, przeczytaj dokumentację system() i printf().
C/C++
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"
P-174659
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.
P-174660
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.
C/C++
char output = system( "program2.exe" ); // Zwraca int, zapisujesz do char
printf( "%s", output ); // Przyjmuje const char* podajesz char
Polecam przetestować na programie który nie kończy się z kodem 0.
P-174661
« 1 » 2 3 4
  Strona 1 z 4 Następna strona