![]() |
ASCII Code in Binär Code?
Tach,
Ascii Code hab ich über ein Edit Feld über den Befehl ord(key) in ein panel einlesen lassen. jetzt will ich erreichen, dass auf diesem Panel der ascii code des eingetippten buchstaben auf buttondruck in den entsprechenden binärcode umgewandelt wird. ich bin mit einer forschleife folgendermaßen vorgegangen:
Code:
Der Fehler soll Delphi nach in der Schleife dort in der zweiten Reihe liegen. Ich muss es hinbekommen, dass er die 8 Stellen aneinander reiht, da muss der Fehler liegen, HELP! :)
procedure TForm1.binaerbuttonClick(Sender: TObject);
var dezimalzahl,startwert,dualziffer,i:integer; begin dezimalzahl:=strtoint(ausgabe.caption); startwert:=128; ausgabe.caption:=''; for i:=1 to 8 do begin dualziffer:=startwert div dezimalzahl; ausgabe.caption:=inttostr(ausgabe.caption)+dualziffer; dezimalzahl:=startwert mod dezimalzahl; startwert:=startwert div 2; end; //of for end; Danke im Vorraus! :witch: [/code] |
ich hoffe es hilft :)
Code:
unit binary;
interface uses SysUtils; function StrToBin(z : char) : string; function StrToBinX(z : char) : string; function BinXToStr(s : string) : integer; implementation function StrToBinX(z : char) : string; var zeichen : integer; ergebnisbin : string; begin zeichen := ord(z); while trunc(zeichen) <> 0 do begin ergebnisbin := IntToSTr(zeichen mod 2) + ergebnisbin; zeichen := trunc(zeichen / 2); end; while length(ergebnisbin) <> 8 do begin ergebnisbin := '0' + ergebnisbin; end; result := ergebnisbin; ergebnisbin := ''; end; function StrToBin(z : char) : string; var zeichen : integer; ergebnisbin : string; begin zeichen := ord(z); while trunc(zeichen) <> 0 do begin ergebnisbin := IntToSTr(zeichen mod 2) + ergebnisbin; zeichen := trunc(zeichen / 2); end; result := ergebnisbin; ergebnisbin := ''; end; function BinXToStr(s : string) : integer; var i,z : integer; u : byte; begin s := trim(s); z := 0; u := 128; for i := 1 to length(s) do begin z := z + StrToInt(s[i]) * u; u := u div 2; end; result := z; end; end. |
der aufruf und in die ueses binary einbinden :)
Code:
[/quote]
procedure TForm1.Button1Click(Sender: TObject);
var i : word; zeichen : string; leer : string[1]; zeichen8 : byte; zeichen8S : string[8]; begin case RadioGroup1.ItemIndex of 0: begin if CheckBox1.Checked then leer := ' ' else leer := ''; for i := 1 to length(Memo1.Lines.Text) do begin zeichen := zeichen + StrToBinX(Memo1.Lines.Text[i]) + leer; end; Memo2.Lines.Text := zeichen; zeichen := ''; end; 1: begin i := 1; zeichen8 := 0; repeat if (Memo1.Lines.Text[i] <> ' ') and ((Memo1.Lines.Text[i] = '1') or (Memo1.Lines.Text[i] = '0')) then begin repeat zeichen8S := zeichen8S + Memo1.Lines.Text[zeichen8+i]; inc(zeichen8); until zeichen8 = 8; zeichen := zeichen + Char(BinXToStr(zeichen8S)); zeichen8 := 0; zeichen8S := ''; i := i + 7; end; inc(i); until i >= length(Memo1.Lines.Text); Memo2.Lines.Text := zeichen; end; end; end; |
Oh Mann :mrgreen:
Geht es auch einfacher? :mrgreen: Die Befehle, die ich eingetippt habe genügen völlig mann, da muss nur irgend ne scheiss kleinigkeit verändert werden :mrgreen: Trotzdem hat dein Code mich auf ne Idee gebracht... :bounce1: |
Code:
So funktioniert das Programm jetzt, allerdings gehts noch net richtig, weil er mault, ich würde Division durch Null machen! Dabei hab ich doch extra den Div-Befehl bzw den Mod-Befehl benutzt!
procedure TForm1.binaerbuttonClick(Sender: TObject);
var dezimalzahl,startwert,dualziffer,i:integer; begin dezimalzahl:=strtoint(ausgabe.caption); startwert:=128; ausgabe.caption:=''; for i:=1 to 8 do begin dualziffer:=startwert div dezimalzahl; ausgabe.caption:='ausgabe.caption'+inttostr(dualziffer); dezimalzahl:=startwert mod dezimalzahl; startwert:=startwert div 2; end; //of for end; |
Re: ASCII Code in Binär Code?
hallo, klingt zwar komisch, aber kann mir
jmd. die binären zahlen für folgende buchstaben nennen? b j ö r n vielen dank, björn |
Zitat:
weiterhin wandelst du den String, der immer eine Zahl sein muss (keine Buchstaben) in einen Integer. um buchstaben zu wandeln musst du für jedes zeichen die ord-funktion aufrufen, die gibt duir den ascii/ansi-wert. brauchst ja eigentlich nur die StrToBin-Funktion von Snoop007 und die für jedes zeichen deines strings machen (z.B. per for-schleife). Schau dir die funktion einfach mal an, so kompliiziert ist es nicht...die anderen Funktionen brauchst du nicht, soweit ich das sehe...die demo zeigt halt alle funktionen, daher bisschen viel... HTH Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18: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-2025 by Thomas Breitkreuz