Einzelnen Beitrag anzeigen

bluescreen25

Registriert seit: 27. Nov 2005
Ort: Geldern
229 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: loadfile aus TMemoryStream

  Alt 21. Feb 2008, 17:50
Zitat von Muetze1:
Zusätzlich könnte ich mir noch vorstellen, dass der SetSize() Aufruf hier fehl am Platze ist, weil dann vllt. das CopyFrom die Datei in der Länge nochmal hinten anhängt an pFile. Somit hast du die doppelte Grösse und nur in der zweiten Hälfte steht die Datei.
Ich habe das mal soweit gemacht, was du vorgeschlagen hast. Nur scheint etwas mit dem Zählvorgang nicht zu stimmen egal ob ich von 0 nach Ende oder von Ende nach gezählt habe, jedesmal eine exception Listenerror.

Nach einigen Absicherungen und Umwandlung in eine Function jetzt hierdurch ein positives Ergebnis:

Delphi-Quellcode:
function LoadPicture(aFileName:String):Boolean;
var lCount,Position,Size : Integer;
begin
  pFile.Clear;
  pFile.Position := 0;
  lFile.Position := 0;
  for lCount:= 0 to Skindateien[0].Count-1 do
  if (aFileName = Skindateien[0].Strings[lCount]) or (lCount = Skindateien[0].Count-1) then break;

  if aFileName = Skindateien[0].Strings[lCount] then
  begin
    Size := StrToInt(Skindateien[1].Strings[lCount]);
    Position := StrToInt(Skindateien[2].Strings[lCount]);

    lFile.Position := Position;
    pFile.CopyFrom(lFile,Size);

  Result := True;
  end else Result:= False;

  pFile.Position := 0;
end;
Sowie die Nutzung:

Delphi-Quellcode:
if LoadPicture(SkinPfad + Ini.ReadString(Menu,'Button' + IntToStr(iIndex) + 'Up',''))then
   UpPicture.LoadFromStream(pFile);

Jetzt muss nur noch die Laderoutine geändert werden, am besten direkt in den Stream, anstatt über FindallFiles einmal und zum 2.ten Mal nochmal auf das gleiche File zugegriffen wird.

Gruß, bluescreen
...und ich dachte, Delphi ist ein Programmgenerator mit nur einem Button......tzzz
  Mit Zitat antworten Zitat