Difference between revisions of "eType/de"
From Free Pascal wiki
Jump to navigationJump to search (Created page with "{{eType}} <br> Zurück zur Konsolenseite.<br> <br> =Zeigt Textdateien in der Console an= Dieser Artikel gehört zur Konsolen- / Terminalprogrammierung unter Win...") |
(repair page) |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{eType}} | {{eType}} | ||
− | + | ||
− | + | == Zeigt Textdateien in der Console an == | |
− | + | Dieser Artikel gehört zur Konsolenprogrammierung unter '''Windows''' und zeigt das die IDE Problem mit äöü Umlauten hat, außer bei der Ausgabe. | |
− | =Zeigt Textdateien in der Console an= | + | |
− | Dieser Artikel gehört zur | + | Beispiel für ein einfaches Dateianzeige-Programm mit eigenem Menü: |
− | + | <syntaxhighlight lang="pascal"> | |
− | Beispiel für ein einfaches Dateianzeige-Programm mit eigenem Menü: | ||
− | <syntaxhighlight> | ||
program eType; | program eType; | ||
− | {$mode | + | {$mode objFPC} |
− | {$ | + | {$longStrings on} |
+ | {$implicitExceptions off} | ||
uses | uses | ||
− | Crt, Windows; | + | Crt ; // , Windows; // so läuft's auch unter Linux |
var | var | ||
Line 32: | Line 31: | ||
function funAnsiZuOEM(strUebergabe: string): string; | function funAnsiZuOEM(strUebergabe: string): string; | ||
begin | begin | ||
− | |||
funAnsiZuOEM := ''; | funAnsiZuOEM := ''; | ||
strUebergabe := Utf8ToAnsi(strUebergabe); | strUebergabe := Utf8ToAnsi(strUebergabe); | ||
Line 39: | Line 37: | ||
Delete(strUebergabe, Length(strUebergabe), 1); | Delete(strUebergabe, Length(strUebergabe), 1); | ||
Result := strUebergabe; | Result := strUebergabe; | ||
− | |||
end; | end; | ||
Line 48: | Line 45: | ||
WriteLn(' ? oder /? oder -? oder --? oder -h oder --h'); | WriteLn(' ? oder /? oder -? oder --? oder -h oder --h'); | ||
WriteLn(''); | WriteLn(''); | ||
− | WriteLn(funAnsiZuOEM(' Dem Programm muss ein Parameter übergeben werden.')); | + | // WriteLn(funAnsiZuOEM(' Dem Programm muss ein Parameter übergeben werden.')); // wegen Win / Linux |
WriteLn(' Diese Datei muss eine Textdatei sein.'); | WriteLn(' Diese Datei muss eine Textdatei sein.'); | ||
WriteLn(' Beispiel:'); | WriteLn(' Beispiel:'); | ||
Line 75: | Line 72: | ||
subHilfe; | subHilfe; | ||
end; | end; | ||
− | |||
end; | end; | ||
Line 81: | Line 77: | ||
function funParametertest: boolean; | function funParametertest: boolean; | ||
begin | begin | ||
− | |||
Result := False; | Result := False; | ||
Line 100: | Line 95: | ||
begin | begin | ||
repeat | repeat | ||
− | |||
chrTastatur := readkey; | chrTastatur := readkey; | ||
Line 193: | Line 187: | ||
begin | begin | ||
− | + | // Setzt den Rückgabewert des Programms vorsorglich auf Fehler | |
− | // Setzt den Rückgabewert des Programms | ||
− | |||
ExitCode := -1; | ExitCode := -1; | ||
Line 212: | Line 204: | ||
// Hauptschleife | // Hauptschleife | ||
repeat | repeat | ||
− | |||
// setzt den Dateizeiger auf den Dateianfang | // setzt den Dateizeiger auf den Dateianfang | ||
reset(datQuellDatei); | reset(datQuellDatei); | ||
Line 220: | Line 211: | ||
subDateiAusgeben; | subDateiAusgeben; | ||
− | // | + | // Schließt die Datei |
Close(datQuellDatei); | Close(datQuellDatei); | ||
subTastaturEingabe; | subTastaturEingabe; | ||
− | |||
until blnProgrammEnde; | until blnProgrammEnde; | ||
− | // Setzt den Rückgabewert des Programms | + | // Setzt den Rückgabewert des Programms auf OK |
− | |||
ExitCode := 0; | ExitCode := 0; | ||
end. | end. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− |
Latest revision as of 20:00, 6 August 2022
│
Deutsch (de) │
Zeigt Textdateien in der Console an
Dieser Artikel gehört zur Konsolenprogrammierung unter Windows und zeigt das die IDE Problem mit äöü Umlauten hat, außer bei der Ausgabe.
Beispiel für ein einfaches Dateianzeige-Programm mit eigenem Menü:
program eType;
{$mode objFPC}
{$longStrings on}
{$implicitExceptions off}
uses
Crt ; // , Windows; // so läuft's auch unter Linux
var
blnTasteGedrueckt: boolean = False;
blnProgrammEnde: boolean = False;
blnDateiZuEnde: boolean = False;
intGeleseneZeilen: integer = 0;
intP: integer = 0;
intS: integer = 0;
chrTastatur: char;
datQuellDatei: Textfile;
strZeile: string;
strEingabe: string;
wrdParameter: word = 0;
function funAnsiZuOEM(strUebergabe: string): string;
begin
funAnsiZuOEM := '';
strUebergabe := Utf8ToAnsi(strUebergabe);
strUebergabe := strUebergabe + #0;
CharToOEM(PChar(strUebergabe), @strUebergabe[1]);
Delete(strUebergabe, Length(strUebergabe), 1);
Result := strUebergabe;
end;
procedure subHilfe;
begin
WriteLn(' Folgende Parameter rufen die Hilfe auf:');
WriteLn(' ? oder /? oder -? oder --? oder -h oder --h');
WriteLn('');
// WriteLn(funAnsiZuOEM(' Dem Programm muss ein Parameter übergeben werden.')); // wegen Win / Linux
WriteLn(' Diese Datei muss eine Textdatei sein.');
WriteLn(' Beispiel:');
WriteLn(' eType test.txt');
WriteLn('');
end;
procedure subFehlermeldung;
begin
if wrdParameter = 0 then
begin
textcolor(lightred);
writeln(funAnsiZuOEM(' Es wurde kein Parameter übergeben!'));
WriteLn('');
textcolor(lightgray);
Exit;
end;
if wrdParameter > 1 then
begin
textcolor(lightred);
WriteLn(funAnsiZuOEM(' Es wurden zuviele Parameter übergeben!'));
WriteLn('');
textcolor(lightgray);
subHilfe;
end;
end;
function funParametertest: boolean;
begin
Result := False;
// Prüft, ob die Hilfe aufgerufen wurde
if (wrdParameter = 1) then
begin
case strEingabe of
'?', '/?', '-?', '--?', '-h', '--h':
subHilfe
else
Result := True;
end;
end;
end;
procedure subTastaturEingabe;
begin
repeat
chrTastatur := readkey;
// erhöht die Zähler um 21
if (chrTastatur = #81) then
begin
if blnDateiZuEnde = False then
begin
Inc(intP, 21);
Inc(intS, 21);
blnTasteGedrueckt := True;
end;
end;
// verringert die Zähler um 21
if (chrTastatur = #73) and (intP >= 21) then
begin
Dec(intP, 21);
Dec(intS, 21);
blnTasteGedrueckt := True;
end;
if (chrTastatur = #79) or (chrTastatur = #27) then
begin
blnProgrammEnde := True;
blnTasteGedrueckt := True;
end;
until blnTasteGedrueckt;
end;
procedure subUeberschrift;
begin
// leert den Bildschirm
clrscr;
// legt die Farbe der Überschrift fest
textcolor(yellow);
writeln(funAnsiZuOEM(
'PGUP --> Zurückblättern | PGDN --> Vorblättern | END --> beenden'));
// legt die Textfarbe fest
textcolor(lightgray);
end;
procedure subDateiAusgeben;
begin
repeat
// liest eine Zeile aus der Datei
readln(datQuellDatei, strZeile);
Inc(intGeleseneZeilen, 1);
// gibt die Zeile aus der Datei am Bildschirm aus
if intGeleseneZeilen >= intP then
writeln(strZeile);
blnDateiZuEnde := False;
// prüft auf Dateiende
if EOF(datQuellDatei) then
begin
blnDateiZuEnde := True;
textcolor(yellow);
writeln('EOF');
textcolor(lightgray);
end;
until ((intGeleseneZeilen mod intS) = 0) or (EOF(datQuellDatei));
end;
procedure subParameterPruefen;
begin
wrdParameter := ParamCount;
// Prüft auf die korrekte Parameteranzahl
if wrdParameter = 1 then
begin
strEingabe := ParamStr(1);
if funParametertest = False then
begin
ExitCode := 0;
Halt;
end;
end
else
begin
subFehlermeldung;
Halt;
end;
end;
begin
// Setzt den Rückgabewert des Programms vorsorglich auf Fehler
ExitCode := -1;
subParameterPruefen;
//Leert den Bildschirm
ClrScr;
// Initialisierung der Zähler
intP := 0;
intS := 21;
// öffnet die Datei
Assign(datQuellDatei, ParamStr(1));
// Hauptschleife
repeat
// setzt den Dateizeiger auf den Dateianfang
reset(datQuellDatei);
intGeleseneZeilen := 0;
subUeberschrift;
subDateiAusgeben;
// Schließt die Datei
Close(datQuellDatei);
subTastaturEingabe;
until blnProgrammEnde;
// Setzt den Rückgabewert des Programms auf OK
ExitCode := 0;
end.