Autor Beitrag
Basti
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 345

Windows Vista
D2005 Pers, D7 Pers
BeitragVerfasst: Fr 05.03.04 14:02 
Hallo Leute, ich möchte ein Programm erstellen, dass Bitmaps oder andere Grafiken
in Icons konvertiert. Das funktioniert auch bis zu der Stelle, an der ich das Icon speichern möchte,
denn dann geht's nicht mehr:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.OnClick_save(Sender: TObject);
var icon1:TIcon;
begin

if (target_Edit.Text<>'') and (Source_Edit.Text<>'') and (image.Picture.Width=32) and (image.Picture.Height=32) then
        begin
        icon1.Create;
        icon1.LoadFromFile(Source_Edit.Text);
        Icon1.SaveToFile(Target_Edit.Text);
        showmessage('Speichervorgang erfolgreich!');
        end
   else showmessage('Speichervorgang abgebrochen');
end;


habt ihr eine Ahnung, was ich falsch mache?
Danke für eure Hilfe.
Sebastian

Moderiert von user profile iconMotzi: Delphi-Tags hinzugefügt.
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Fr 05.03.04 17:35 
Basti hat folgendes geschrieben:
habt ihr eine Ahnung, was ich falsch mache?


Jede menge.

Lassen wir den großen Fehler zum Schluß lösen.

ausblenden Delphi-Quelltext
1:
  Icon1.LoadFromFile(Source_Edit.Text);					


Du fragst garnicht vorher nach ob die Datei überhaupt existiert (if FileExists ...). Existiert die Datei nicht, dann wird deine Prozedur abgebrochen, jedoch ohne vorher den Speicher wieder frei zu geben. Ein Objekt setzt man immer in einen Try-Finally Schutzblock. Entweder das eine (vorher prüfen ob die Datei wirklich da ist) oder ein Schutzblock:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
  try
    //Hier was machen
  finally
    Icon1.Free;
  end;


Ein Schutzblock hat den Vorteil, daß nicht gleich die Prozedur abgebrochen wird, sondern nur der Teil im Schutzblock.

Aber nun zum wichtigsten:

ausblenden Delphi-Quelltext
1:
  Icon1 := TIcon.Create;					


und nicht Icon1.Create.

Die anderen Sachen lasse ich mal weg, da sie nicht tragisch sind, sonderl lediglich nicht notwendig.

_________________
Popov