STRING kłopoty ze składnią przy przejęciu danych

0

Witam wszystkich

Jak zwykle mam kłopoty ze składnią
Kłopot polega na tym że komponent który zastosowałem ma możliwość pobierania "pliku" jako "string"
Tylko że nie mogę podpiąć się do tego "STRING-a"

początki były takie

//*********************************************************************************************************************
function bin2dec(b:string):cardinal;
var i:integer;
begin
result:=0;
for i:=1 to length(b) do
if b[i]='1' then result:=result*2+1 else result:=result*2;
//if b[i]='1' then result:=result*2 else result:=result*2+1;
end;
//*********************************************************************************************************************
procedure TForm1.Button1Click(Sender: TObject);
var dane: TStringlist;
    rozkaz_dec: byte;
begin
 try
    dane:= TStringList.Create;
    dane.loadfromfile('rozkaz.txt');
   if dane.Count<>1 then
begin
dane.free;    //cokolwiek bo plik nie taki itd ...
exit;
end;
    rozkaz_dec:= bin2dec(dane.strings[0]);
    DlPortWritePortUchar(adres+PORT0 , rozkaz_dec);
finally //ladne bezpieczne zakonczenie itd.
//dane.free;
end;

end;

czyli
pobieram "plik"
tworzę "string"
przekształcam go w "daną" typu "DEC"
i wysyłam na "port"

Ale chciałem to samo zrobić przez "HTTP"
Zastosowałem komponent "httpget" www.utilmind.com/delphi/httpget.zip , ma on możliwość pobierania pliku i pobierania "danej" jako "string"
obie procedurki działają bardzo ładnie

Ale nie mogę podpiąć się pod "string-a"
chciałem pominąć
pobieranie "plik-u"
i tworzenie "string-u"

Ale mi to nie chce działać

Jak robię

procedure TForm1.Button2Click(Sender: TObject);
begin
HTTPGet.URL := Edit_URL.Text;   // Adres pliku
HTTPGet.GetString;  //pobiera string
end;

procedure TForm1.HTTPGetDoneString(Sender: TObject; Result: String);
begin
ShowMessage(Result);     // wyswietla pobrany string

end;

To wszystko działa ok.
jak chcę umieścić "string" u siebie w kodzie to nie mogę skompilować
gdzie popełniam błąd w składni

//*********************************************************************************************************************
function bin2dec(b:string):cardinal;
var i:integer;
begin
result:=0;
for i:=1 to length(b) do
if b[i]='1' then result:=result*2+1 else result:=result*2;
//if b[i]='1' then result:=result*2 else result:=result*2+1;
end;
//*********************************************************************************************************************
procedure TForm1.Button1Click(Sender: TObject);
var     rozkaz_dec: byte;
begin
    rozkaz_dec:= bin2dec(HTTPGet.GetString[0]);    ////    GDZIE BŁĄD ?????
    DlPortWritePortUchar(adres+PORT0 , rozkaz_dec);
end;

PROSZĘ o pomoc kolegów , bo nie mogę sobie z tym poradzić

0

Nie nie, tak się nie da - GetString to procedura, ona nic nie zwraca, a dostanie się tego stringa jest dopiero w HTTPGetDoneString().

Musisz po prostu w kliknięciu na przycisk (zdarzeniu Button1Click) zrobić samo

procedure TForm1.Button1Click(Sender: TObject);
  HTTPGet.GetString;
end;

a w zdarzeniu HTTPGetDoneString tego komponentu zrobić:

procedure TForm1.HTTPGetDoneString(Sender: TObject; Result: String);
var rozkaz_dec: byte;
begin
  rozkaz_dec:= bin2dec(Result);
  DlPortWritePortUchar(adres+PORT0 , rozkaz_dec);
end;
0

Dziękuję za pomoc koledze "Ktos"
Właśnie dokładnie o to mi chodziło :)
Już pięknie działa [browar] [browar] [rotfl]

WIELKIE DZIĘKI

1 użytkowników online, w tym zalogowanych: 0, gości: 1