![]() |
Re: Womit sollte ein Delphi-Anfänger beginnen? VCL oder nonV
Die Frage war:
Zitat:
Entweder Konsole oder VCL. Was ich bevorzuge, habe ich schon geschrieben. nonVCL aber auf gar keinen Fall. |
Re: Womit sollte ein Delphi-Anfänger beginnen? VCL oder nonV
Zitat:
|
Re: Womit sollte ein Delphi-Anfänger beginnen? VCL oder nonV
Zitat:
Malo meinte mit nonVCL eine simple Console App OHNE Fenster und OHNE VCL. Die WinAPI habt ihr rausgelesene, denn malo hat explizit darauf hingewiesen, dass er KEIN nonVCL tutorial machen will. Einem Anfänger die grausigen Abgründe der WinAPI zu stoßen wäre entweder dumm geplant oder hundsgemein. ;) Ich habe auch mit KEINEM Wörtlein WinAPI basiertes Fenstergefriemel erwähnt! Ich bin halt nur der Meinung, dass man schneller lernen kann, wenn man das zu Lernende absolut überschauen kann. Will Mr NewBie eine Klasse mit 2 Properties instanzieren die ene Eigenschaft besetzen und die andere in die ausgeben -> In einer Konsolen App hat er nur seinen Code, plus WriteLn und ReadLn. Da passiert nix großartiges, dass abstrakt für ihn wäre. |
Re: Womit sollte ein Delphi-Anfänger beginnen? VCL oder nonV
Zitat:
Zitat:
Um wenigstens ein bisschen Programmierkomfort zu haben und als Einstieg in die Objektorientierung bleibt ja immer noch die CLX, die kann man schließlich auch in Konsolenanwendungen benutzen. |
Re: Womit sollte ein Delphi-Anfänger beginnen? VCL oder nonV
Grundsätzlich habt ihr Recht (Console ist auch nonVCL).
Die WinAPI kam durch diesen Satz von malo in die Diskussion: Zitat:
|
Re: Womit sollte ein Delphi-Anfänger beginnen? VCL oder nonV
Ich hatte mal was für einen Kollegen geschrieben das sah so aus:
dpr Datei:
Delphi-Quellcode:
MeineUnit.pas
program MeineExe;
{$APPTYPE CONSOLE} uses SysUtils, MeineUnit in 'MeineUnit.pas'; var MeineKlasse: TMeineKlasse; // Gibt Klassentyp an Finished: Boolean; // Deklariert Variable(Muss nicht erzeugt werden) Userinp: String; // Usereingabe Zahlen: record // Eine zusammenfassung von 2 Variablen Zahl1: Integer; Zahl2: Integer; end; begin WriteLN('***********************************'); WriteLN('* Hallo zu meinem ersten Programm *'); WriteLN('* Mathematik pur *'); WriteLN('***********************************'); // Textausgabe Sleep(2000); // 2sec warten MeineKlasse := TMeineKlasse.create; // Erzeugt die Klasse MeineKlasse.ProduktProc(5,7); // Ruft eine Procedure(Aufgabe) auf WriteLn('Ergebniss aus 5 * 7: ' + MeineKlasse.MeinString); // Textausgabe Sleep(1000); // 1sec Warten WriteLn('Ergebniss aus 7 * 9: ' + MeineKlasse.Produktfunc(7,9)); (* Anmerkung: Hier wurde eine Funktion aufgerufen die einen Rückhabetyp besitzt --> Textausgabe *) Sleep(1000); // Warten while Finished = False do begin WriteLn('-----------------------------------'); // Solange Finished nicht True ist mache immer dasselbe write('Zahl 1 angeben: '); // User Zahl eingeben lassen ReadLn(Zahlen.Zahl1); // Zahl auslesen write('Zahl 2 angeben: '); // Zweite Zahl eingeben ReadLn(Zahlen.Zahl2); // Zweite Zahl auslesen WriteLn('Ergebniss aus ' + Zahlen.Zahl1.ToString + ' * ' + Zahlen.Zahl2.ToString + ': ' + MeineKlasse.Produktfunc(Zahlen.Zahl1,Zahlen.Zahl2)); // Ergebniss ausgeben, dabei kann Quelltext auch über mehrere Zeilen gehen // für die Übersichtlichkeit Sleep(500); // Warten WriteLn('-----------------------------------'); Write('Programm beenden(Y/N)?'); // Fragen on Programm beendet werden soll ReadLn(Userinp); // Eingabe einlesen if Userinp = 'Y' then Finished := True else if Userinp = 'N' then Finished := False; // Verarbeitung end; { TODO -oUser -cConsole Main : Hier Code einfügen } end.
Delphi-Quellcode:
Würde es jetzt anderst schreiben, ist aber durchaus gut zu lernen!
interface
uses SysUtils; type TMeineKlasse = class // Deklariert eine Klasse mit dem Namen TMeineKlasse private protected public MeinString: String; // Deklariert die Variable MeinString vom Typ String MeineZahl: integer; // Deklariert die Variable MeineZahl vom Typ Integer procedure ProduktProc(ErsteZahl, ZweiteZahl: integer); // Deklariert eine Procedure mit dem Namen ProduktProc und 2 Parametern function Produktfunc(ErsteZahl, ZweiteZahl: integer): String; // Deklariert eine Funktion mit dem Namen ProduktProc und 2 Parametern und // dem Rückgabewert vom Typ String published end; implementation procedure TMeineKlasse.ProduktProc(ErsteZahl, ZweiteZahl: integer); var Produkt: integer; // Deklariert eine Variable mit dem Namen Produkt begin Produkt := (ErsteZahl * ZweiteZahl); // Weisst der Variable Produkt das Produkt der Variablen ErsteZahl und ZweiteZahl zu self.MeinString := Produkt.ToString; // Weisst der Variablen MeinString den String der Zahl der Variable Produkt zu end; function TMeineKlasse.Produktfunc(ErsteZahl, ZweiteZahl: integer): String; var Produkt: integer; // Deklariert eine Variable mit dem Namen Produkt begin Produkt := (ErsteZahl * ZweiteZahl); // Weisst der Variable Produkt das Produkt der Variablen ErsteZahl und ZweiteZahl zu Result := Produkt.ToString; // Gibt den String der Zahl der Variable Produkt zurück // Result ist ein Reserviertes Wort für jede Funktion und ist die Rückgabe end; end. Ach ja: Man kann in jeder Anwendung eine Console benutzen( Ich mache das z.b. zu Debugzwecken )! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz