Hvilken fil er i et TImage?

Tags:    delphi

User
Bruger #75 @ 22.10.01 22:11
Hej

Hvordan kan man finde ud af hvilken fil et TImage viser...altså med en procedure? Jeg skal nemlig sammenligne to billeder om finde ud af om de bruger samme bitmap-fil.

Med venlig hilsen

Mikkel Bøg Clemmensen
mt.clemmensen@vip.cybercity.dk




2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
<quote>Hej

Hvordan kan man finde ud af hvilken fil et TImage viser...altså med en procedure? Jeg skal nemlig sammenligne to billeder om finde ud af om de bruger samme bitmap-fil.

Med venlig hilsen

Mikkel Bøg Clemmensen
mt.clemmensen@vip.cybercity.dk
</quote>

Et hurtigt kig i sovsen tyder på at det kan man ikke. (Men det er kun et hurtigt kig, og klokken er mange, så det kan nemt være at jeg har overset et eller andet :-) ). Så vidt jeg kan se er det der sker, når man siger TImage.Picture.Bitmap.LoadFromFile at den henter filen ind i en stream, som den så bruger, og derefter glemmer alt om filnavnet:

<pre>
procedure TGraphic.LoadFromFile(const Filename: string);
var
Stream: TStream;
begin
Stream := TFileStream.Create(Filename, fmOpenRead or fmShareDenyWrite);
try
LoadFromStream(Stream);
finally
Stream.Free;
end;
end;
</pre>

Hvis du vil sammenligne dem, kan du lave en savetostream på dem begge, og sammenligne de to streams. (Brug memorystream, så har du en pointer til bufferen, og kan bruge CompareMem). Det er næsten det bedste forslag jeg umiddelbart kan komme på.

/Data



User
Bruger #75 @ 23.10.01 18:37
<quote>Et hurtigt kig i sovsen tyder på at det kan man ikke. (Men det er kun et hurtigt kig, og klokken er mange, så det kan nemt være at jeg har overset et eller andet :-) ). Så vidt jeg kan se er det der sker, når man siger TImage.Picture.Bitmap.LoadFromFile at den henter filen ind i en stream, som den så bruger, og derefter glemmer alt om filnavnet:
</quote>

Eftersom at du er den eneste, som har svaret, får du pointene. Du svarede jo at der ikke er en procedure, som kan gøre lige det, jeg ønsker. Og det er egentlig svar nok til de 30 point.


Med venlig hilsen

Mikkel Bøg Clemmensen
mt.clemmensen@vip.cybercity.dk




t