Guten abend zusammen !
Also ich grübele hier schon ne weile über so eine etwas problematische Funktion,
und ich glaube inzwischen mir fehlt hier einfach die Erfahrung bzw. die Funktionen
und wollte mal fragen ob mir da einer weiterhelfen kann.
Ich denke was sie machen soll ist klar: sie führt ein Kommandozeilenprogramm aus und
liest die Ausgabe zurück ins Programm - und übrigens : sie funktioniert auch !![Smile :) :)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
Welche Probleme gibts also:
1. damit mir der pBuffer nicht verloren geht wenn ich die Funktion ( die übrigens innerhalb einer Klasse ist und von einer Anderen Klasse aufgerufen wird) verlassen wird hab ich ihn einfach als "static" deklariert - was aber blöd ist weil beim zweiten aufruf der funktion der puffer immernoch voll mit den alten Daten ist (wie mach ich ihn am besten leer bzw. was gibts für alternativen ? )
2. Nun, ich hab einfach mal inziwschen das Gefühl das das ein ganz übler C++ Code ist (gemixt mit C usw.) und da muss es doch noch was bessres geben
- Nachteilig ist allerdings das ich hier ohne "windows.h"&Co. auskommen muss (also keine ShellExecute Befehle und so).. nur STL und so portabel wie möglich eben
Hat jemand (auch allgemeine) Verbesserungsvorschläge ?
Bin schon mal im vorraus sehr dankbar.. hier der Code:
aso: das ganze is in borland cbuilder 6.0
Also ich grübele hier schon ne weile über so eine etwas problematische Funktion,
und ich glaube inzwischen mir fehlt hier einfach die Erfahrung bzw. die Funktionen
![Wink ;) ;)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f609.png)
Ich denke was sie machen soll ist klar: sie führt ein Kommandozeilenprogramm aus und
liest die Ausgabe zurück ins Programm - und übrigens : sie funktioniert auch !
![Smile :) :)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
Welche Probleme gibts also:
1. damit mir der pBuffer nicht verloren geht wenn ich die Funktion ( die übrigens innerhalb einer Klasse ist und von einer Anderen Klasse aufgerufen wird) verlassen wird hab ich ihn einfach als "static" deklariert - was aber blöd ist weil beim zweiten aufruf der funktion der puffer immernoch voll mit den alten Daten ist (wie mach ich ihn am besten leer bzw. was gibts für alternativen ? )
2. Nun, ich hab einfach mal inziwschen das Gefühl das das ein ganz übler C++ Code ist (gemixt mit C usw.) und da muss es doch noch was bessres geben
![Smile :) :)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
Hat jemand (auch allgemeine) Verbesserungsvorschläge ?
Bin schon mal im vorraus sehr dankbar.. hier der Code:
Code:
char const * HandleRes::getRes(const char* sExecuteCommandA ) {
File* pProgPipe;
static char pBuffer[STD_BUFF_SIZE]= "";
std::string sFullsystem = sExecuteCommandA;
sFullsystem = sFullsystem + " " + sParamTest; // Anhängen von Kommandozeilenvariablen (ausserhalb definiert)
if ( ( pProgPipe = _popen( sFullsystem.c_str(), "rb")) == NULL ) {
return("");
}
fread( pBuffer, STD_BUFF_SIZE , sizeof( char ), pProgPipe );
if ( !pBuffer ) {
return( "" );
}
fflush(pProgPipe);
_pclose(pProgPipe);
return( pBuffer );
}
aso: das ganze is in borland cbuilder 6.0
Zuletzt bearbeitet: