J'essaie de transférer quelques gros flux (~ 1Mb) entre le serveur/client DataSnap mais en vain. J'essaie de comprendre le code de Jim Tierney (http://blogs.embarcadero.com/jimtierney/2009/04/06/31461) sans aucune chance et je ne peux même pas compiler le code à cause d'une bibliothèque manquante, de toute façon ...gros flux avec DataSnap
La taille maximale d'un flux que je peux pour recevoir est 64k, donc des conseils/idées/échantillons de code que vous pouvez fournir pour un programmeur de week-end comme moi sera très bien accueilli. Je vous remercie!
mon code serveur:
function TsrvMethods.getStream(iCount: integer): TStream;
begin
Result := dummyStream('', iCount);
end;
function dummyStream(sCnt: string; iCount: integer): TStream;
begin
Result := TMemoryStream.Create;
while iCount > 1 do begin
Result.Write(Pointer(sCnt)^, Length(sCnt));
Dec(iCount);
end;
Result.Seek(0, TSeekOrigin.soBeginning);
end;
mon client code d'appel:
procedure TfrmMain.butStreamClick(Sender: TObject);
var
sStr : TStream;
begin
cycleConnection; //make sure we have an active connection
with TsrvMethodsClient.Create(SQLConn.DBXConnection, False) do begin
sStr := getStream(Integer(SpinCount.Value));
Free;
end;
FreeAndNil(sStr);
end;
Quel est le problème avec ce code? S'il vous plaît laissez-nous savoir ce que l'erreur de compilation ou d'exécution est et sur quelle ligne. –
Le code que j'ai posté fonctionne bien avec des flux plus petits que 64k. Lorsque des flux plus importants sont envoyés, il n'y a pas d'erreur mais le flux est vide de l'autre côté (ou n'est pas envoyé/reçu). –