Upline: Infos & Dokus
Programmierung
Delphi
Delphi HowTo
Delphi HowTo Teil 4 MathetoolKonsolenprogramm für GleichungssystemeWas ist eine Konsolenanwendung und wozu ist sie gut?Konsolenprogramme sind für verschiedene Anwendungen auch heute noch durchaus praktisch. Das wohl wichtigste Anwendungsgebiet sind kleine Tools, die administrative Aufgaben übernehmen und somit dem Administrator die Arbeit erleichtern. Aber auch für andere kleine Programme, die ohne eine Benutzerführung auskommen, sollte man sich als Programmierer Gedanken darüber machen, ob die Konsole nicht reichen könnte. Der entscheidenste Vorteil einer Konsolenanwendung ist, dass der doch recht beachtliche Speicherbedarf für die grafische Oberfläche entfällt. Allein die ausführbare exe-Datei wird ohne grafische Oberfläche und ein paar Buttons schnell 150-200kB kleiner, als mit diesen oft nicht benötigten Features.Um Ein Konsolenprogramm zu erstellen, kann man entweder bequem per Datei-Menü "Neues Projekt" die Konsolenanwendung auswählen oder man erstellt ein normales Projekt, speichert dieses und paßt anschließend die Delphi-Project-Datei (*.dpr) an und entfernt die überflüssigen Dateien aus dem Projektverzeichnis. Wie man an dem unten zu sehenden Sourcecode zu diesem Beispiel erkennen kann, ist der Aufbau einer Konsolenanwendung sehr einfach. Es werden kaum Units etc. benötigt. Das HauptprogrammZu Beginn wird per randomize der Zufallsgenerator initialisiert und anschließend wird der Kopfbereich ausgegeben. Mit der Funktion paramstr() kann man beim Programmstart übergebene Parameter auslesen. Anschließend werden einige Tests an den Parametern durchgeführt. Im Fehlerfall (also falsche Parametereingabe) wird die Prozedur fehler() aufgerufen und das Programm beendet. Aus dieser Prozedur läßt sich auch erkennen, wie das kleine Tool aufgerufen werden muss.Die ersten Erklärungen zu diesem Artikel habe ich am 12.06.2006 hier eingetragen, weitere Erklärungen zum Sourcecode folgen später ... Quelltext: program Project1; {$APPTYPE CONSOLE} uses sysutils; var a,i,nks,fnks:integer; s,zs:string; function zz:real; begin if zs='-n'then zz:=random(10)+1 else if zs='-z'then zz:=random(20)-10 else if zs='-q'then zz:=random(2000)/100-10 else if zs='-r'then zz:=random(2000)/100/(random(200)/10+1)-10; end; function zahlzustr(zahl:real;vz:boolean):string; // mit Vorzeichen var zh:string; begin zh:=floattostrf(zahl,ffFixed,nks+3,nks); if zh[1]<>'-'then if vz then zh:='+'+zh else zh:=' '+zh; zahlzustr:=zh; end; procedure glsyst(u:integer); var a1,a2,a3,b1,b2,b3,c1,c2,c3,d1,d2,d3,x,y,z:real; g1,g2,g3,gh:string; const r=10; begin a1:=zz;a2:=zz; b1:=zz;b2:=zz; c1:=zz;c2:=zz; x:=zz;y:=zz; d1:=a1*x+b1*y; d2:=a2*x+b2*y; if u=3then begin a3:=zz;b3:=zz;c3:=zz;z:=zz; d1:=d1+c1*z; d2:=d2+c2*z; d3:=a3*x+b3*y+c3*z; end; writeln; g1:=' I '+zahlzustr(d1,false)+' = '+zahlzustr(a1,false)+'x '+ zahlzustr(b1,true)+'y ';if u=3then g1:=g1+zahlzustr(c1,true)+'z'; writeln(g1); g2:=' II '+zahlzustr(d2,false)+' = '+zahlzustr(a2,false)+'x '+ zahlzustr(b2,true)+'y ';if u=3then g1:=g1+zahlzustr(c2,true)+'z'; writeln(g2); if u=3then begin g3:=' III '+zahlzustr(d3,false)+' = '+zahlzustr(a3,false)+'x '+ zahlzustr(b3,true)+'y '+zahlzustr(c3,true)+'z'; writeln(g3); end; write(' Loesung: x=',x:2:2,' y=',y:2:2);if u=3then write(' z=',z:2:2); writeln; end; procedure quadrgl; begin end; procedure fehler(f:real); begin writeln('Fehler ',f:1:1,' bei Parameterueberpruefung'); writeln;writeln('Aufruf:');writeln; writeln(' mathetool [-g2|-g3|-q] [-n|-z|-q|-r]Da dieses Beispiel als Konsolenprogramm kein Formular nutzt, ist ein Download überflüssig. Es genügt, den obigen Sourcecode in die Delphi-IDE reinzukopieren. |