![]() |
Chiffre BinärtoText TexttoBinär
So, tach auch!
Dieses Programm liegt hier schon ne ganze Zeit bei mir ungenutzt rum, da ich nicht gedächt hätte, dass andere das brauchen könnten (siehe Zeitmaschinen-Thread). ![]() ![]() Größe ca. 376 KB Viel Spass damit! Es wurden nur Standardkomponenten verwendet. |
Re: Chiffre BinärtoText TexttoBinär
Moin,
ich wollte das grad testen und hab dazu mal den "Code" aus dem Zeitmaschinenthread eingegeben: Zitat:
Zitat:
|
Re: Chiffre BinärtoText TexttoBinär
ja in ein Edit kann man leider kein Enter/ Zeilenumbruch eingeben bzw. auch nicht hineinkopieren. War mir auch schon aufgefallen!
|
Re: Chiffre BinärtoText TexttoBinär
Dann machs doch einfach mit nem TMemo oder TRichedit. ;)
|
Re: Chiffre BinärtoText TexttoBinär
Jeder darf am Quelltext etc. soviel 'rumfrickeln' wie er will.
Ist wohl eher Opensource als Freeware, wie mir gerade auffällt. |
Re: Chiffre BinärtoText TexttoBinär
Ich hab das ganze mal mit Memos gebastelt...
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
//TextToBin var i, j:Integer; T: String; begin Memo2.Lines.Clear; for i:=0 to Memo1.Lines.Count-1 do begin T:=''; for j:=1 to Length(Memo1.Lines[i]) do T:=T+IntToBin(Ord(Memo1.Lines[i][j]))+' '; Memo2.Lines.Add(T); end; end; procedure TForm1.Button1Click(Sender: TObject); //BinToText var i, j:Integer; T, T2: String; begin Memo2.Lines.Clear; T:=Memo1.Text; for i:=Length(T) downto 1 do if (T[i]<>'1') and (T[i]<>'0') then Delete(T,i,1); T2:=''; while Length(T)>0 do begin T2:=T2+Chr(BinToInt(copy(T,1,8))); Delete(T,1,8); end; Memo2.Lines.Add(T2); end; |
Re: Chiffre BinärtoText TexttoBinär
mann muss einen Zeileumbruch abfangen der ja #10#13 entspricht!
ich hab mich auchmal versucht sowas zu Programmieren:
Delphi-Quellcode:
function TBin.texttobin(s : string) : string;
var i, j : integer; c : char; Begin result := ''; for i := 1 to length(s) do Begin c := s[i]; if s[i] = #10 then Begin result := result + #10; continue; end else if s[i] = #13 then Begin result := result + #13; continue; end; for j := 7 downto 0 do if byte(c) and (1 shl j) <> 0 then result := result + '1' else result := result + '0'; result := result + ' '; end; end; function TBin.bintotext(s : string) : string; var i, preres, j : integer; b : string; Begin result := ''; i := 1; while i < length(s) do Begin preres := 0; b := ''; if s[i] = ' ' then Begin inc(i); continue; end else if (s[i] = #10) then Begin inc(i,2); result := result + #10; continue; end else if (s[i] = #13) then Begin inc(i,2); result := result + #13; continue; end; for j := i to i+7 do b := b + s[j]; for j := 8 downto 1 do preres := preres + (StrToInt(b[j]) shl (8-j)); result := result + chr(preres); inc(i, 8); end; end; |
DP-Maintenance
Dieses Thema wurde von "flomei" von "Freeware" nach "Open-Source" verschoben.
Source is ja mit dabei und es wurde zum "Rumfrickeln" aufgerufen... |
Re: Chiffre BinärtoText TexttoBinär
Also, ich hab das ganze nochmal geschrieben.
Was es kann: - umformen in jede basis (nicht nur Binär) - Zurückumformen aus jeder Basis Zeilenumbrücher ignoriere ich einfach, beim zurückkonvertieren werden sie ja eh wiederhergestellt^^ Mein Formular: 2 Memos, ein SpinEdit und zwei Buttons Die Umrechnungen entstammen übrigens der Unit UBase2Base von mir die afaik auch in der CodeLib steht.
Delphi-Quellcode:
Edit: Schön verpackt^^
function Potenz(Base, Exp : Integer):Int64;
var i:Integer; begin Result:=1; for i:=1 to Exp do Result:=Result * Base; end; function GetChar(Number: Integer):Char; begin if Number<10 then Result:=Chr(Number+48) else if Number<91 then Result:=Chr(Number+55) else Result:=' '; end; function GetInt(Value: Char):Integer; begin Result:=Ord(Value); if Result<58 then Result:=Result-48 else if Result<91 then Result:=Result-55 else Result:=0; end; function DecToBase(Value:Int64; Base:Integer):String; var Rest:Integer; begin Result:=''; repeat Rest:=Value Mod Base; Value:=Value Div Base; Result:=GetChar(Rest) + Result; until Value=0; end; function BaseToDec(Value:String; Base:Integer):Int64; var i, j:Integer; begin Value:=Trim(Value); j:=Length(Value)-1; Result:=0; for i:=1 to Length(Value) do begin Result:=Result + GetInt(Value[i]) * Potenz(Base,j); dec(j); end; end; function Code(Val: String; Base: Integer):String; var i:Integer; begin Result:=''; for i:=1 to Length(Val) do Result:=Result+DecToBase(Ord(Val[i]),Base)+' '; end; function DeCode(Val: String; Base: Integer):String; var P: Integer; A: String; begin Result:=''; P:=Pos(' ',Val); while P>1 do begin A:=copy(Val,1,P); Result:=Result+Chr(BaseToDec(A,Base)); Delete(Val,1,P); P:=Pos(' ',Val); end; end; BTW: Basis 2: 1000101 1100100 1101001 1110100 111010 100000 1010011 1100011 1101000 11110110 1101110 100000 1110110 1100101 1110010 1110000 1100001 1100011 1101011 1110100 1011110 1011110 Basis 4: 1011 1210 1221 1310 322 200 1103 1203 1220 3312 1232 200 1312 1211 1302 1300 1201 1203 1223 1310 1132 1132 Basis 16: 45 64 69 74 3A 20 53 63 68 F6 6E 20 76 65 72 70 61 63 6B 74 5E 5E ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:48 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