Просьба помочь с программой по отображению внутреннего представления строк.
Для статических строк я все сделал, а для динамических (ansistring, widestring, widechar, pchar) и char не могу - выводятся абсолютно не те значения, ошибок delphi не выдает.
Таким образом, мой вопрос - как найти внутреннее представление типов ansistring, widestring, widechar, pchar и char
моя программа:
(в edit1 вводится строка, на listbox1 выводится результат)
Код:
type
tb = array[0..15] of byte;
var
ss:shortstring;
ans:ansistring;
ws:widestring;
c:char;
wc:widechar;
v:variant;
tbp:^tb;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
radiogroup1.ItemIndex:=0;
end;
procedure TForm1.Edit1Click(Sender: TObject);
begin
edit1.Clear;
end;
//функция отображения внутреннего представления символа/строки
procedure TForm1.Button1Click(Sender: TObject);
var
i:byte;
n:integer;
begin
listbox1.Items.Clear;
tbp:=nil;
//for i:=0 to 15 do begin tbp[i]:=0; end;
if(radiogroup1.ItemIndex=0) then //shortstring
begin for i:=0 to 15 do ss[i]:=#0;
ss:=edit1.text;
tbp:=@ss; i:=0;
end;
if(radiogroup1.ItemIndex=1) then //ansistring
begin //for i:=0 to 15 do ans[i]:=#0;
ans:=edit1.text;
tbp:=@ans; i:=0;
end;
if(radiogroup1.ItemIndex=2) then //widestring
begin //for i:=0 to 15 do ws[i]:=#0;
ws:=edit1.text;
tbp:=@ws; i:=0;
end;
if(radiogroup1.ItemIndex=3) then //Char
begin c:=#0;
if (Length(Edit1.text)<>1) then showmessage('тип данных char может быть задан 1 символом');
edit1.text:=edit1.text[1];
c:=edit1.text[1];
tbp:=@c; i:=0;
end;
if(radiogroup1.ItemIndex=4) then //WideChar
begin wc:=#0;
wc:=edit1.text;
tbp:=@wc; i:=0;
end;
while(tbp[i]<>0) do begin
listbox1.items.add(inttostr(tbp[i]));
i:=i+1;
end;end;