Einzelnen Beitrag anzeigen

Benutzerbild von nTE
nTE

Registriert seit: 8. Sep 2003
60 Beiträge
 
#7

Re: Extremer Speicherfraß durch Strings/StringLists (?)

  Alt 11. Okt 2003, 19:41
Auf der Page steht nur, dass SaveToStrings den Source nach TStrings speichert. :P

Embedded WB Homepage

Daher habe ich mal das Nötige rauskopiert (hoffe ich).

Delphi-Quellcode:
function TEmbeddedWB.SaveToStrings(AStrings: TStrings): HRESULT;
begin
// while ReadyState <> READYSTATE_COMPLETE do
// Forms.Application.ProcessMessages;
  if Assigned(document) then
    Result := SaveDocToStrings(Document, AStrings)
  else Result := S_FALSE;
end;

function SaveDocToStrings(Doc: IDispatch; var AStrings: TStrings): HResult;
var
  IpStream: IPersistStreamInit;
  AStream: TMemoryStream;
begin
  AStream := TMemoryStream.Create;
  try
    IpStream := doc as IPersistStreamInit;
    if not Assigned(IpStream) then Result := S_FALSE else
      if Succeeded(IpStream.save(TStreamadapter.Create(AStream), TRUE))
        then begin
        AStream.Seek(0, 0);
        AStrings.LoadFromStream(AStream);
        Result := S_OK;
      end else Result := S_FALSE;
  except
    Result := S_FALSE;
  end;
  AStream.Free;
end;
In der oberen Funktion habe ich die beiden Codezeilen auskommentiert, da sonst SaveToStrings nie funktioniert, wenn z.B. ein JavaScript ständig den Inhalt ändert (z.B. bei einem Counter oder einer Uhr).
Ausserdem funktioniert SaveFrameToStrings auch ohne das. ;)
  Mit Zitat antworten Zitat