![]() |
Konsole: Integer zu ASCII Code + Druck?
Hallo liebe Forumsmitglieder!
Ich bin Designstudent und habe nur rudimentäre TurboPascal Kenntnisse aus meiner Schul- und Textadventurezeit. Für ein eigenes Projekt in Typographie, einen CODE-spuckenden Roboter, will ich folgendes programmieren: Es geht um ein simples Programm, bei dem der User eine Zahl zwischen 31 und 255 eingibt, woraufhin der Roboter das entsprechende Zeichen des ISO Latin 1 Codes (Weiterführung des ASCII Codes) über einen Nadeldrucker ausgibt. Meine Überlegung war folgende: 1) Einfaches Konsolen-Pascal-Programm 2) User gibt Zahl zwischen 31 und 255 ein, Programm prüft ob Zahl zulässig (kein Problem!!!) :???: 3) Programm wandelt Zahl in ASCII Zeichen um (PROBLEM!!!) :wall: Ich dachte an so etwas hier:
Delphi-Quellcode:
Geht aber nicht, da: [Error] Typobot.dpr(23): Constant expression expected (bei x:= #c; will er wohl direkt die zahl)
program Typobot;
{$APPTYPE CONSOLE} uses SysUtils; var c: integer; x: char; begin Writeln('Zeige ISO-Zeichen Nummer: '); Readln(c); if (c > 255) or (c < 31) then writeln ('Fehler! Nur Zahlen von 31 bis 255 eingeben') else x:= #c; //Hier sollte das ISO-Latin 1 Zeichen entstehen...:( writeln ('Das Zeichen Nr. ' +IntToStr(c)+ ' ist ' +x+ '!'); readln; end. Gibt es da eine elegante Möglichkeit oder ist es einfacher für alle möglichen 255 zeichen eine bedingung zu schreiben? (if c = 198 then writeln ('Æ'))... Zweites Problem wäre dann dass das Ganze dann direkt über einen (Nadel-)drucker ausgedruckt werden soll, also einfach nur das Zeichen... und da habe ich bislang noch gar nichts gefunden :/. (Ja, hab die Suche genutzt..und n Online Delphi Buch gelesen..nix..) Vielleicht könnt ihr mir ja helfen. Meine Dankbarkeit ist euch sicher :)))... Viele Grüße, Benedikt |
Re: Konsole: Integer zu ASCII Code + Druck?
Delphi-Quellcode:
;)
x := Chr(c)
Oha: Herzlich Willkommen :) Zum Drucken: Binde die Unit "Printer" ein und dann in etwa:
Delphi-Quellcode:
Da bin ich mir jetzt nicht ganz sicher, da ich gerade kein Delphi zur Hand habe :)
Printer.BeginDoc;
Printer.Canvas.TextOut(50,20, 'Die Zahl ' + InttoStr(c) + ' entspricht ' + x); Printer.EndDoc; Printer.Print; |
Re: Konsole: Integer zu ASCII Code + Druck?
:oops:
Vielen herzlichen Dank...hätte noch Stunden gebraucht um das rauszukriegen..es kann ja so einfach sein..:D das mit dem drucker schau ich mir dann mal genauer an jetzt. danke!!! :cheers: |
Re: Konsole: Integer zu ASCII Code + Druck?
Kein Problem ;-)
|
Re: Konsole: Integer zu ASCII Code + Druck?
Ich glaube die unit Printer in Zusammenhang mit writeln geht nicht für Nadeldrucker (unter Delphi), da einfach die writeln-Befehle an ein Printerobjekt, also dessen Canvas weitergeleitet werden. Statt dessen könnte
![]() pitti |
Re: Konsole: Integer zu ASCII Code + Druck?
Hallo Pitti,
danke für die Seite mit dem Beispielcode; leider reichen meine Kenntnisse noch nicht ganz aus, um da durchzusteigen, zu dem schluss komme ich jedenfalls jetzt nach ca. einer Stunde "Analyse" :)... ich scheitere ja schon daran, eine unit zu erzeugen...siehe muhkuhs drucktipp. es ist wohl doch etwas komplizierter mit dem drucken als ich es mir vorgestellt hatte (wie so oft). hier hatte ich noch etwas gefunden, was halbwegs 'simpel' aussah, aber man kann es wohl nicht zu diesem Zweck gebrauchen:
Delphi-Quellcode:
gefunden hier:
var
F: TextFile; begin AssignFile(F, 'LPT1');// LPT2,COM1,COM2... Rewrite(F); Writeln(F, 'Hello'); Writeln(F, 'There!'); Writeln(F, #12); CloseFile(F); end; ![]() wenn ich den code in ein neues Konsolenprogramm einfüge rauscht jedenfalls das Ding durch und schließt sich wieder (klar) aber ohne irgendwas zu drucken; habe diverse Ports ausprobiert, mein Drucker wäre am USB also USB001 laut Windows... (können Konsolenprogramme USB überhaupt ansprechen?! na, soll eh nadeldrucker ran..). Den nadeldrucker hab ich zur Zeit gar nicht hier, ein normaler Ausdruck würde mir aber im Prinzip auch erstmal reichen. Ich glaube, dass ich bei der ersten Druckvariante noch am ehesten durchblicken würde. Sorry, ich kann mir denken, mein Unwissen muss geradezu schmerzhaft sein :). ![]() |
Re: Konsole: Integer zu ASCII Code + Druck?
Hi Highriser,
da ich jetzt Delphi installiert habe, habe ich mich nochmals um Dein Problem gekümmert. Herausgekommen ist nun das:
Delphi-Quellcode:
Viel Spaß damit :-)
program Typobot;
{$APPTYPE CONSOLE} uses SysUtils, Printers; var c: integer; x: char; tmp: String; begin Writeln('Zeige ISO-Zeichen Nummer: '); Readln(c); if (c > 255) or (c < 31) then writeln('Fehler! Nur Zahlen von 31 bis 255 eingeben') else x := Chr(c); //Hier sollte das ISO-Latin 1 Zeichen entstehen...:( writeln('Das Zeichen Nr. ' + IntToStr(c) + ' ist ' + x + '!'); WriteLn('Drucken? (Y / N)'); ReadLn(tmp); if (LowerCase(tmp) = 'y') then begin Printer.BeginDoc; Printer.Canvas.TextOut(150, 60, 'Das Zeichen Nr. ' + IntToStr(c) + ' ist ' + x + '!'); Printer.EndDoc; // Hier wird schon gedruckt. end; readln; end. |
Re: Konsole: Integer zu ASCII Code + Druck?
Zitat:
:thumb: DANKE! Wenn du mal was an Designleistung brauchst, logo oder sowas, info@hghrsr.de - einfach mal anfragen... |
Re: Konsole: Integer zu ASCII Code + Druck?
guden!
erstmal @muhkuh sorry bin noch nicht zu gekommen dir zu antworten zuviel stress dann noch eine kurze frage. wenn man in die konsole buchstaben eingibt, stürzt das programm ab. kann man das irgendwie einfach ausschließen? und irgendwie funktioniert die bedingung nicht; gibt man eine zahl unter 31 oder über 255 ein, gibt er zwar die meldung aus, druckt aber nochmal das zeichen das zuletzt eingegeben wurde. hm.. also jungs und mädels wär toll wenn ihr mir nochmal helfen könntet, morgen ist abgabe.. danke schonmal gruß das iso latin bot design team :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 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-2025 by Thomas Breitkreuz