Avatar billede dilling-hansen Nybegynder
24. maj 2006 - 14:49 Der er 5 kommentarer og
3 løsninger

String - Dec | String - Oct | String - Hex | String - Bin

Har to memoer og knapper for hver konventering...
nu mangler jeg bare koden (Bare ;P)

Er der nogen der ligger inde med noget der virker... kan ikke finde noget ordenlig ved at søge på eksperten.dk :(

(* Uddyber lidt senere, har fri fra skole nu ;P *)
Avatar billede martinlind Nybegynder
24. maj 2006 - 15:20 #1
Prøv at kigge i Indy's functions unit, de har nogle rutiner til hex bla.
Avatar billede dilling-hansen Nybegynder
24. maj 2006 - 20:41 #2
Jeg ville mene at det er lidt "lidt" svar til 121 point...
har sat så meget ud for så at håbe på nogen lidt mere detaljerede svar, da jeg ikke er helt skrap til delphi endnu :)
Avatar billede martinlind Nybegynder
24. maj 2006 - 21:51 #3
det var en fejl :( skulle ikke ha' været et svar
Avatar billede dilling-hansen Nybegynder
24. maj 2006 - 22:13 #4
det gør skam ikke noget, så have jeg bare håbet at du kunne hjælpe mig lidt mere ;P
meget gerne noget eksempel noget :)
Avatar billede arne_v Ekspert
25. maj 2006 - 04:45 #5
jeg er ikke speciel skrap til Delphi men det her ser ud til at virke:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

const
  valid = '0123456789ABCDEF';

function FromRadix(s : string; radix : integer) : integer;

var
  i,res : integer;

begin
  res := 0;
  for i := 1 to length(s) do begin
    res := radix * res + pos(s[i], valid) - 1;
  end;
  FromRadix := res;
end;

function ToRadix(v : integer; radix : integer) : string;

var
  tmp : integer;
  res : string;

begin
  res := '';
  tmp := v;
  while tmp>0 do begin
    res := valid[tmp mod radix + 1] + res;
    tmp := tmp div radix;
  end;
  ToRadix := res;
end;

var
  v : integer;

begin
  case ComboBox1.ItemIndex of
    0 : v := FromRadix(Edit1.Text, 2);
    1 : v := FromRadix(Edit1.Text, 10);
    2 : v := FromRadix(Edit1.Text, 16);
  end;
  case ComboBox2.ItemIndex of
    0 : Edit2.Text := ToRadix(v, 2);
    1 : Edit2.Text := ToRadix(v, 10);
    2 : Edit2.Text := ToRadix(v, 16);
  end;
end;

end.
Avatar billede kroning Nybegynder
25. maj 2006 - 14:26 #6
function StrToOct(Str: string; digits: Integer): string;
var
  rest: Longint;
  oct: string;
  Value : longint;
begin
    Value:=StrToIntDef(Str,0);
  oct := '';
  while Value <> 0 do
  begin
    rest:=Value mod 8;
    Value:=Value div 8;
    oct:=IntToStr(rest)+oct;
  end;
  Result:=oct;
  Result:=StringOfChar('0',Digits-Length(Result))+Result;
end;

function StrToHex(Str : string; Digits : integer) : string;
begin
    Result:=IntToHex(StrToIntDef(Str,0),Digits);
end;

function StrToBin (Str: string; digits: integer ): string;
var
    Value: LongInt;
begin
    Value:=StrToIntDef(Str,0);
    result:='';
    while value>0 do
  begin
      Result:=chr(48+(value and 1))+Result;
        value:=value shr 1;
    end;
  Result:=StringOfChar('0',Digits-Length(Result))+Result;
end;


---------------------------------
var
    str : string;
begin
    str:='1234';

//String - Dec, eller evt StrToIntDef();
    StrToInt(str);

//String - Oct
    StrToOct(str,8);

//String - Hex
    StrToHex(str,8);

//String - Bin
    StrToBin(str,16);
end;
Avatar billede arne_v Ekspert
09. juli 2006 - 04:20 #7
også et svar fra mig
Avatar billede dilling-hansen Nybegynder
18. september 2006 - 23:35 #8
fandt ikke ud af det hele, men tak for svarene :)
deler bare pointne mellem os, som tak for jeres forslag :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester