Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Text in Dualzahlen umwandeln (https://www.delphipraxis.net/149535-text-dualzahlen-umwandeln.html)

Neutral General 24. Mär 2010 09:09

Re: Text in Dualzahlen umwandeln
 
Zitat:

Zitat von stho
schau mal hier:

Delphi-Quellcode:
  while sWert / 2 <> 0 do
  begin
    sAusgabe := IntToStr(sWert mod 2) + sAusgabe;
    sWert := sWert div 2;
  end;
sWert = Ascii-Wert eines Buchstaben
sAusgabe = Text der ins Edit-Feld kommen soll ^^

Da benutzt du schon Präfixe für deine Variablen (wovon ich (in der Form) kein Fan bin :P ) und dann auch noch falsch :mrgreen:
sWert müsste dann wohl eher ein bWert oder ein iWert sein :stupid:

guidok 24. Mär 2010 09:34

Re: Text in Dualzahlen umwandeln
 
Zitat:

Zitat von stho
(Wenn Fehler da sind, einfach bescheid geben oder korregieren ^^)

korregieren --> korrigieren :wink:

countdown 24. Mär 2010 13:04

Re: Text in Dualzahlen umwandeln
 
Hallo Leute!
danke für die ganzen Hilfen, aber iwie verzweifele ich im Moment schon an der Umwandlung eines Textes in die ascii-werte...

Hier mal etwas Quelltext:

Delphi-Quellcode:
Var
S: integer
ttext: string
begin
 For s:= 1 to length(ztext) do

begin
ttext:= inttostr(ord(ztext[s])); // ttext:= ttext + intostr(ord(ztext[s]));
end;

ztext:= ttext;

end;

ztext ist der in ein Editfeld eingegebene Text.
Nun möchte ich, dass jedes Zeichen von ztext in mit ord umgewandelt wird, dann zu einem string gemacht wird und als ttext gesetzt wird.Am Ende wird ztext dann zu ttext und ich kann mir ztext in einem editfeld wieder ausgeben lassen.
Das Problem ist aber dass bei der Lösung mit "ttext:= inttostr(ord(ztext[s]));" die eig ja nur für einen Buchstaben ist, da ttext ja sonst immer wieder neu überschrieben wird, auch bei unterschiedlichen Eingaben immer die selbe Zahl 116 zurückkommt.
Bei der Lösung // ttext:= ttext + intostr(ord(ztext[s])); , mit der man meiner meinung nach ja auch mehr zeichen umwandeln und wieder ausgeben können müsste, bekomme ich schon bei einer eingabe von nur einem zeichen eine 50-60 Stellige Zahl zurück!
Weiß da jemand Rat und könnte mir vielleicht zeigen wie es richtig gemacht wird?

guidok 24. Mär 2010 13:13

Re: Text in Dualzahlen umwandeln
 
Wo und wie rufst du denn deine Routine auf?

Grundsätzlich sollte die auskommentierte Variante schon funktionieren. Die nicht auskommentierte Variante müsste normalerweise den ASCII-Wert des letzten Zeichens in ztext liefern, da du zwar eine Schleife über alle Zeichen durchläufts, aber den ermittelten Wert immer wieder überschreibst.

countdown 24. Mär 2010 13:24

Re: Text in Dualzahlen umwandeln
 
ich habe eine "neueklasse" erstellt, die das attribut ztext und einige methoden u.a auch "textumwandeln" besitzt.
nun habe ich in der hauptunit ztext über die methode "setztetext" aus der klasse "neueklasse" den in ein editfeld eingegebenen Text zugewiesen und rufe dann über eine buttonclick methode die prozedure "textumwandeln" auf in der der angegebene Quelltext steht. Über eine Methode gibtext der klasse "neueklasse" lasse ich dann in der hauptunit ztext wieder in einem editfeld ausgeben.

Hoffe das ist verständlich formuliert^^

p80286 24. Mär 2010 13:41

Re: Text in Dualzahlen umwandeln
 
versuch es doch einmal mit dieser Simpellösung:
Delphi-Quellcode:
function Byte2Bin(inbyte:byte):string;
const
  bina:array [0..1] of char=('0','1');
begin
  result:='       ';
  result[1]:=bina[(inbyte shr 7) and $01];
  result[2]:=bina[(inbyte shr 6) and $01];
  result[3]:=bina[(inbyte shr 5) and $01];
  result[4]:=bina[(inbyte shr 4) and $01];
  result[5]:=bina[(inbyte shr 3) and $01];
  result[6]:=bina[(inbyte shr 2) and $01];
  result[7]:=bina[(inbyte shr 1) and $01];
  result[8]:=bina[(inbyte and $01)];
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i : integer;
begin
  for i:=1 to length(label1.caption) do
    label2.Caption:=label2.Caption+' '+Byte2Bin(byte(label1.Caption[i]));
end;
Gruß
K-H

guidok 24. Mär 2010 13:53

Re: Text in Dualzahlen umwandeln
 
Also bei mir funktioniert das problemlos:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var
    s: integer;
    ttext: string;
begin
  for s:= 1 to length(Edit1.Text) do
  begin
    ttext:= ttext + inttostr(ord(Edit1.Text[s]));
  end;

Label1.Caption := ttext;
end;

countdown 24. Mär 2010 14:02

Re: Text in Dualzahlen umwandeln
 
Danke p80286 auch wenn ich die funktion, die du mir gegeben hast, absolut nicht verstehe, konnte ich es zu laufen bringen indem ich es so in die hauptunit geschrieben habe:

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var s:integer;
begin
 for s:= 1 to length(edit1.text) do
  label17.caption := label17.caption + inttostr(ord(edit1.text[s]))   ;
end;
was jetzt nicht verstehe ist warum das ganze nicht funktioniert, wenn ich das umwandeln in eine andere klasse auslagern will...
hat da noch jemand eine antwort drauf?wäre super wenn ihr mir das noch erklären könntet aber ich bin erstmal froh, dass es jetzt soweit bei mir klappt:) danke an alle

DeddyH 24. Mär 2010 14:13

Re: Text in Dualzahlen umwandeln
 
Was genau funktioniert denn nicht? :glaskugel:

countdown 24. Mär 2010 14:13

Re: Text in Dualzahlen umwandeln
 
alles klar hat sich erledigt, ich habe den fehler selber gefunden:P
danke nochmals an alle helfer


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 Uhr.
Seite 2 von 3     12 3      

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 by Thomas Breitkreuz