AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Konsole: Integer zu ASCII Code + Druck?

Ein Thema von TheHighriser · begonnen am 3. Jan 2007 · letzter Beitrag vom 23. Jan 2007
Antwort Antwort
TheHighriser

Registriert seit: 3. Jan 2007
5 Beiträge
 
#1

Konsole: Integer zu ASCII Code + Druck?

  Alt 3. Jan 2007, 20:41
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!!!)

Ich dachte an so etwas hier:

Delphi-Quellcode:
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.
Geht aber nicht, da: [Error] Typobot.dpr(23): Constant expression expected (bei x:= #c; will er wohl direkt die zahl)

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
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Konsole: Integer zu ASCII Code + Druck?

  Alt 3. Jan 2007, 20:44
x := Chr(c)

Oha: Herzlich Willkommen

Zum Drucken:

Binde die Unit "Printer" ein und dann in etwa:

Delphi-Quellcode:
Printer.BeginDoc;
Printer.Canvas.TextOut(50,20, 'Die Zahl ' + InttoStr(c) + ' entspricht ' + x);
Printer.EndDoc;
Printer.Print;
Da bin ich mir jetzt nicht ganz sicher, da ich gerade kein Delphi zur Hand habe
  Mit Zitat antworten Zitat
TheHighriser

Registriert seit: 3. Jan 2007
5 Beiträge
 
#3

Re: Konsole: Integer zu ASCII Code + Druck?

  Alt 3. Jan 2007, 20:49

Vielen herzlichen Dank...hätte noch Stunden gebraucht um das rauszukriegen..es kann ja so einfach sein..

das mit dem drucker schau ich mir dann mal genauer an jetzt. danke!!!

  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Konsole: Integer zu ASCII Code + Druck?

  Alt 3. Jan 2007, 20:50
Kein Problem
  Mit Zitat antworten Zitat
pitti platsch

Registriert seit: 26. Dez 2006
Ort: Berlin
25 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Konsole: Integer zu ASCII Code + Druck?

  Alt 3. Jan 2007, 20:57
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 diese Seite helfen.

pitti
Sollte geh'n...
  Mit Zitat antworten Zitat
TheHighriser

Registriert seit: 3. Jan 2007
5 Beiträge
 
#6

Re: Konsole: Integer zu ASCII Code + Druck?

  Alt 3. Jan 2007, 22:09
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:
var
  F: TextFile;
begin
  AssignFile(F, 'LPT1');// LPT2,COM1,COM2...
  Rewrite(F);
  Writeln(F, 'Hello');
  Writeln(F, 'There!');
  Writeln(F, #12);
  CloseFile(F);
end;
gefunden hier:
http://www.swissdelphicenter.com/de/showcode.php?id=293

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 .

http://img63.imageshack.us/img63/437...easciibtm2.jpg
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Konsole: Integer zu ASCII Code + Druck?

  Alt 5. Jan 2007, 07:39
Hi Highriser,

da ich jetzt Delphi installiert habe, habe ich mich nochmals um Dein Problem gekümmert.

Herausgekommen ist nun das:

Delphi-Quellcode:
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.
Viel Spaß damit
  Mit Zitat antworten Zitat
TheHighriser

Registriert seit: 3. Jan 2007
5 Beiträge
 
#8

Re: Konsole: Integer zu ASCII Code + Druck?

  Alt 6. Jan 2007, 15:59
Zitat von Die Muhkuh:
Viel Spaß damit



DANKE!

Wenn du mal was an Designleistung brauchst, logo oder sowas, info@hghrsr.de - einfach mal anfragen...
  Mit Zitat antworten Zitat
TheHighriser

Registriert seit: 3. Jan 2007
5 Beiträge
 
#9

Re: Konsole: Integer zu ASCII Code + Druck?

  Alt 23. Jan 2007, 21:52
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz