AGB  ·  Datenschutz  ·  Impressum  







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

ASCII Code in Binär Code?

Ein Thema von Piwi · begonnen am 22. Jan 2003 · letzter Beitrag vom 19. Jun 2006
Antwort Antwort
Piwi

Registriert seit: 22. Jan 2003
Ort: Trier
15 Beiträge
 
Delphi 5 Standard
 
#1

ASCII Code in Binär Code?

  Alt 22. Jan 2003, 21:02
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:
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;
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!

Danke im Vorraus! [/code]
  Mit Zitat antworten Zitat
Snoop007

Registriert seit: 14. Jan 2003
331 Beiträge
 
Delphi 6 Personal
 
#2
  Alt 22. Jan 2003, 21:08
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.
  Mit Zitat antworten Zitat
Snoop007

Registriert seit: 14. Jan 2003
331 Beiträge
 
Delphi 6 Personal
 
#3
  Alt 22. Jan 2003, 21:09
der aufruf und in die ueses binary einbinden

Code:
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;
[/quote]
  Mit Zitat antworten Zitat
Piwi

Registriert seit: 22. Jan 2003
Ort: Trier
15 Beiträge
 
Delphi 5 Standard
 
#4
  Alt 22. Jan 2003, 21:12
Oh Mann

Geht es auch einfacher? Die Befehle, die ich eingetippt habe genügen völlig mann, da muss nur irgend ne scheiss kleinigkeit verändert werden

Trotzdem hat dein Code mich auf ne Idee gebracht...
  Mit Zitat antworten Zitat
Piwi

Registriert seit: 22. Jan 2003
Ort: Trier
15 Beiträge
 
Delphi 5 Standard
 
#5
  Alt 22. Jan 2003, 21:18
Code:
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;
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!
  Mit Zitat antworten Zitat
burnzzz

Registriert seit: 19. Jun 2006
1 Beiträge
 
#6

Re: ASCII Code in Binär Code?

  Alt 19. Jun 2006, 00:09
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
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#7
  Alt 19. Jun 2006, 00:54
Zitat von Piwi:
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!
div hat nix mit "Schutz vor Division durch 0" zu tun, sondern ist lediglich eine Integer-division, und 0 gehört auch zu den Integern dazu...

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
  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 12:36 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