system-Befehle "schlecht" ?



  • Ich finde, dass es am Anfang voellig ausreicht, wenn man erst anfaengt zu programmieren. Fuer groessere Programme kann das ein Problem sein, wenn z.B. mal ein Befehl auf einer Maschine fehlt oder das Programm auf ein anderes OS portiert werden soll.

    Wenn man sich im Klaren darueber ist, dass es einen an eine bestimmte Plattform fesselt (DOS oder Windows in dem Fall), dann ist es ja eigentlich kein Problem. Es macht dann kaum noch einen Unterschied, ob man die Konsole-API Funktionen von Windows aufruft, oder einen Shell-Befehl.



  • Warum lange, zum TEil komplizierte Anweisungen benutzen, wenn es einfach geht?

    Siehe: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39453.html

    Ich finde, dass es am Anfang voellig ausreicht, wenn man erst anfaengt zu programmieren.

    Gut möglich.

    Es macht dann kaum noch einen Unterschied, ob man die Konsole-API Funktionen von Windows aufruft, oder einen Shell-Befehl.

    Das ist Unfug. Die API-Funtkion ist nicht nur wesentlich schneller sondern bietet auch noch alle Vorteile die im Link oben genannt werden.

    Richtsatz: Gibt es eine API-Funktion die das selbe tut wie ein Shell-Befehl verwende die API-Funktion.

    @PowerOff: Kannst du uns mit deinen "Weisheiten" zumindest hier etwas verschonen, danke 🙂

    MfG SideWinder



  • SideWinder schrieb:

    Das ist Unfug. Die API-Funtkion ist nicht nur wesentlich schneller sondern bietet auch noch alle Vorteile die im Link oben genannt werden.

    Richtsatz: Gibt es eine API-Funktion die das selbe tut wie ein Shell-Befehl verwende die API-Funktion.

    Ein Anfaenger, der nicht mal weiss, was ein Funktionsaufruf eigentlich macht, wird damit aber nix anfangen koennen. Das Problem ist ja immer, dass man versucht, den Leuten "tolle" Beispiele beizubringen, wo man schon irgendwas sehen kann, damit ein Erfolgserlebnis da ist.

    Wer spaeter auch noch so programmiert, ist selber schuld. Abgesehen davon, gibt es durchaus Faelle, in denen ein Programm wie ein Script agieren muss. Dann ist es voellig wurscht, ob man den API benutzt oder nicht.

    Worauf ich hinauswollte, war lediglich der Portabilitaets-Aspekt. Denn es ist beides nicht portabel -- API oder Shell-Aufruf.

    SideWinder schrieb:

    @PowerOff: Kannst du uns mit deinen "Weisheiten" zumindest hier etwas verschonen, danke 🙂

    Da wirst Du Pech haben, mein Freund. 👎

    Kannst Du bitte in Zukunft von persoenlichen Beleidigungen Abstand nehmen, danke!



  • Ein Anfaenger, der nicht mal weiss, was ein Funktionsaufruf eigentlich macht, wird damit aber nix anfangen koennen.

    Wenn er mit system("cls") klar kommt, kommt er auch mit meiner Schritt-Für-Schritt-Anleitung für die Improved Console klar und hat auch mehr Funktionsumfang.

    Denn es ist beides nicht portabel -- API oder Shell-Aufruf.

    Ein weiteres Problem von system(), einem unerfahrenem Programmierer scheint hier die Portabilität gegeben - kommt ja aus der stdlib. Viele wissen ja gar nicht, dass cls hier ein Programm auf ihrer Plattform ist.

    Kannst Du bitte in Zukunft von persoenlichen Beleidigungen Abstand nehmen, danke!

    War keine persönliche Beleidigung. Aber immer und immer wieder wird irgendwo system() empfohlen obwohl es genügend Threads gibt in denen erfahrene Programmierer mit guten Argumenten zeigen warum das nicht gut ist. Das dann ausgerechnet von dir mal wieder eine Empfehlung kommt - wo du doch inzwischen gemerkt haben solltest, dass du nicht immer die ganze Wahrheit erzählst - war irgendwie klar und hat mich etwas auf die Palme gebracht.

    MfG SideWinder



  • Power Off schrieb:

    SideWinder schrieb:

    @PowerOff: Kannst du uns mit deinen "Weisheiten" zumindest hier etwas verschonen, danke 🙂

    Da wirst Du Pech haben, mein Freund. 👎

    schade. du redest wirklich zu 98% müll und es würde mich freuen, wenn du uns schonen würdest.



  • volkard schrieb:

    schade. du redest wirklich zu 98% müll und es würde mich freuen, wenn du uns schonen würdest.

    Ach ja? Du solltest mal Dein Geseiher lesen!



  • Mich erinnert die Streiterei an etwas, das mir ein Kollege mal sagte:

    Kollege von frueher schrieb:

    Ich red nicht gern uebers Internet, weil es endet ja doch nur in gegenseitigem "Du Arschloch! Halts Maul! Bloedian!" usw.

    so in der Art! 😉

    JAAAA, wir respektieren alle unsere gegenseitigen Meinungen! 😉

    Food for thought, wie der Ami sagen wuerde ...



  • Power Off schrieb:

    Mich erinnert die Streiterei an etwas, das mir ein Kollege mal sagte:

    Kollege von frueher schrieb:

    Ich red nicht gern uebers Internet, weil es endet ja doch nur in gegenseitigem "Du Arschloch! Halts Maul! Bloedian!" usw.

    bei genauerem hinsehen, wirste feststellen, daß es dein kollege und du diesbezüglich wie vom pech verfolgt sind. [ironie]das liegt natürlich nicht an euch.[/ironie]

    JAAAA, wir respektieren alle unsere gegenseitigen Meinungen! 😉

    nee, natürlich gibt es personen, die bei mir diesbezüglich verspielt haben. meine oma zum beispiel ist absolut unglaubwürdig, wenn sie über quantenmechanik redet. zum glück tut sie es nie. es gibt leider auch unangenehme zeitgenossen, die ständig über sachen dozieren, von denen sie keinen blassen schimmer haben.



  • spueler1982 schrieb:

    Hallo,
    lese immer wieder Beiträge, daß man möglichst keine Anweisungen wie z.B
    system ("Pause");
    oder
    system ("cls");
    benutzen soll.

    jo. manchmal wird auch was aus tradition voneinander abgeschrieben. besonders die "verbote" sind davon betroffen, zum teil völlig ohne sinn zu sein.
    ich gebe mal ein paar anregungen:

    du schreibst in dein programm system("pause"). das programm wird total nützlich, es ist ein dateien-downloader zum beispiel. ich hab keine admin-rechte auf dem fetten server der firma. aber einer der admins benutzt dein programm, um auf dem fileserver sachen zu saugen. ich lege in mein vollgemülltes download-verzeichnis eine pause.bat mit dem inhalt "mach volkard zum admin und pause". das probem ist eigentlich nur, wieder ans alte pause zu kommen. zum beispiel mit

    @dir
    @cmd /c pause
    

    dann stelle ich mich dumm und bettel den admin an, mir ein bestimmtes file zu saugen und in dieses verzeichnis zu legen, weil ich das einfach nicht hinkriege. tja, nu bin ich auch admin und lese die mails aller kollegen.
    (hab diesen hack gerade erfunden, aber er drängt sich ja geradezu auf.)

    na, ich denke, damit hat sich system() für alle internen befehle (also cls und pause) sowie für alle externen befehle ohne angabe des voll qualifizierten pfades schonmal als ausreichend gefährlich herausgestellt, daß du es ausschließlich daheim benutzen sollst, aber nie in software, die du an fremde weitergibst.

    system ist lahm. ist bei cls manchmal störend, bei pause natürlich nicht.

    ich will deinen code auf linux benutzen. und außer den system-achen würde alles klappen. und du schreibst immer system("cls") statt clrscr(). obwohl dein compiler clrscr() anbietet, was mich dann verwirrt. wenn einer deinen code verwenden will und kein clrsrc hat, schreibt er sich schnell void clrscr(){system("cls");}. oder du schreibst es, ohne, daß ich sage, daß du das tun solltest. aber bevor du das prog an fremde auslieferst, setzt schnell die clrscr-funktion und die pause-funktion von dir um in was ordentlicheres. und das geht sogar erstaunlich leicht. und du mußt es ja nur einmal machen. ab dann kannste die beiden funktionen ja in jedem weiteren programm von die benutzen.

    es wäre keine schlechte angewohnheit, immer ein schlechtes gefühl zu haben, wenn man system("cls") schreibt. ungefähr so schlecht wie bei goto. und jeder, der sagt "mach das system("cls") weg", der hat eigentlich recht. auf jeden fall muß es in einer clrsrc() gekapselt werden! und dann auch weggemacht werde, aber das kann man dank der kapselung noch ein paar tage verschieben.

    wie ich Sidewinder kenne, wird er so nett sein, und eine von der improved console unabhängige ganz kleine pause() und clrscr() bauen, damit einem weiteren übelstande abgeholfen ist.

    was wichtiges vergessen?



  • volkard schrieb:

    was wichtiges vergessen?

    Wer einen Windows-Server benutzt, ist selber schuld.


Anmelden zum Antworten