Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Delphi - převaděč číselných soustav

Dobrý den.
Ve studuji na střední škole obor výpočetní systémy a zadali nám jistý úkol naprogramovat převaděč číselných soustav. Vím si rady s tím jak to celé bude fungovat ale programovací stránka je slabší :-(. Prozatím pracuji na převodu z dvojkové (binární) do osmičkové (oktalové) soustavy. Kód programu vypadá takto (není ani z 1/16 kompletní):

unit prevodnik;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
s,prid:string;
pom:array of string;
begin
 case radiogroup1.ItemIndex of
  0: begin //zvolená binární jako vstupní
     s:=edit1.Text;
     for i:=1 to length(s) do //ověření zda se jedná o binární číslo
      begin
      if (s[i]>'1') or (strtoint(s[i])<0) or ((s[i]>='A') and (s[i]<='Z')) or ((s[i]>='a') and (s[i]<='z')) then //podmínka pro binár. číslice
       begin
       showmessage('Číslo není v binár. soust. (Za čísla nepište značku soustavy např. 10001d)');
       edit2.Text:='';
       end;//konec podmínky
      end;//konec ověření (cyklu)
      case radiogroup2.ItemIndex of //do které soustavy převádět
       0:  edit2.Text:=edit1.text;   //zvolena binární jako výstupní

       1:begin
          if length(s) mod 3 <> 0 then              //zvolená oktalová jako výstupní //podmínka pro nastavení délky řetězce aby byl dělitelný 3
           begin
            for i:= 1 to (length(s) mod 3) do //přidání nul do řetězce
                prid:=prid + '0'; //konec cyklu
           s:=prid+s;
         end;//konec podmínky
         i:=0;
         j:=1;
         setlength(pom,(length(s) div 3));
          while i<length(s) do //přiřazení 3 čísel do pole
           begin
           pom[j-1]:=s[i+1]+s[i+2]+s[i+3];
           i:=i+3;
           j:=j+1;
           end;    //konec whileu


        end;//konec převodu z binár. do oktalové soust.
      end; //konec převodů binár soust.(caseu2)
     end;//konec převodů binární soust.
 end;//konec caseu
end;//konec příkazů

end.//konec programu

Syntaxně mi delphi chybu neukazuje, pouze při samotném převodu z binární do oktalové soustavy mi delphi vyhodí chybu typu EaAccesViolation... Podle nastaveného breakpointu v delphi by špatný kód měl být někde v cyklu while. Bohužel asi nerozumím tomu co je v cyklu špatně a jak chybu opravit.
Zmena predmetu, pôvodne: Delphi (los)

Odpověď na otázku

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny