[DELPHI] [INDY] Tablice Rekordów Szczególne Pytanie

0

Czy da się wysłać Od razu całą tablicę z servera do Clienta?

Próbowałem czegoś takiego, ale potem w petli w której kazdy element tablicy(string) dodawałem do Listiewa to wywalało mi błąd tak jakby był błąd w strukturze tablicy bo chodzi tu o błąd z dostępem do pamięci EAccessViolation...

0

zobacz coś jak

idhtp1.WriteBuffer(Arr[0], Length(Arr), True);
0

A co ty masz za komponent? to jest IdTCPClient czy cos innego?

Client:

begin
Client.Connect();

Client.WriteLn('GET');

Client.ReadBuffer(StringBuf[0], Length(StringBuf));

Client.Disconnect;


end;

Procedura wczytujaca do list boxa:

var
i: integer;
s: string;
begin

for i := Low(StringBuf) to High(StringBuf) do
begin
s := StringBuf[i];
ListBox.Items.Add(s);
end;
end;

Server:

var
cmd: string;
begin
cmd := AThread.Connection.ReadLn();

if cmd = 'GET' then
begin
AThread.Connection.OpenWriteBuffer();
AThread.Connection.WriteBuffer(StringBuf[0], Length(StringBuf), True);
AThread.Connection.CloseWriteBuffer;
end;

Nie wiem czego nie działa.. wiem, że program sie zatrzymuje gdy klient proboje przypisac zmienej s (string) dany element z otrzymanej tablicy.

Wedlug mnie wszystko robie dobrze..
Moze cos przeoczylem?

0

Nie pomylilem sie wpisujac w temacie Tablice Rekordow bo o nie mi chodzi, ale zaczalem testowac wysylanie tablic stringow gdyz z tablicami rekordow mialem ten sam problem. Tablica jest wypelniana poprawnie, gdyz umiescilem na serverze drugiego listboxa i po wypelnieniu tablicy moge spokojnie odczytac z niej dane do drugiego listboxa.

Blad wywala juz po otrzymaniu rekordu, a mianowicie tu:

for i := Low(StringBuf) to High(StringBuf) do
begin

s := StringBuf[i];

ListBox.Items.Add(s);
end;
end;

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