Autor Beitrag
AlexII
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 180



BeitragVerfasst: So 10.03.13 01:02 
Hallo Delphianer,

hab hier ein Problem, ich kann nicht Bilder mehrfach hintereinander laden. Ich meine eins, wenn das nicht schön ist, dann anderes usw. Es liegt wohl daran, dass fs belegt ist. fs ist ein FileStream was an anderer Stelle in die DB eingefügt wird, deswegen kann ich das nach dem Laden nicht! frei geben. Wenn ich das aber vor dem Laden des Bildes frei gebe bekomme nen Speicherzugriffsfehler. Keine Ahnung was ich machen soll, quelle mich schon den ganzen Tag.

Wäre für jede Hilfe dankbar.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure TForm2.PictureBitBtnClick(Sender: TObject);
var jpeg: TJPEGImage;
begin
 
  if OpenPictureDialog1.Execute then
  begin

    jpeg := TJPEGImage.Create;
    try
      jpeg.LoadFromFile(OpenPictureDialog1.FileName);

      if (((jpeg.Width>100and (jpeg.Width<200)) or ((jpeg.Height>100and (jpeg.Height<200))) then
      begin
        fs := TFileStream.Create(OpenPictureDialog1.FileName, fmOpenRead);
        PictureImage.Picture.Assign(jpeg);
      end;

    finally
      jpeg.Free;
    end;
  end;

end;
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 10.03.13 03:39 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: So 10.03.13 09:13 
Hallo,
was zwingt dich eigentlich, den Filestream schon in der Bildladeroutine zu erzeugen.
Du kannst doch einem String openpicturedialog1.filename übergeben und erst, wenn Du Dir mit dem Bild sicher bist, den Filestream erzeugen, also
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
var bildname:string;
...
procedure TForm2.PictureBitBtnClick(Sender: TObject);
var jpeg: TJPEGImage;
begin
  if OpenPictureDialog1.Execute then
  begin
    jpeg := TJPEGImage.Create;
    try
      jpeg.LoadFromFile(OpenPictureDialog1.FileName);
      bildname:='';
      if (((jpeg.Width>100and (jpeg.Width<200)) or ((jpeg.Height>100and (jpeg.Height<200))) then
      begin
        bildname := OpenPictureDialog1.FileName;
        PictureImage.Picture.Assign(jpeg);
      end;
    finally
      jpeg.Free;
    end;
  end;
end;
... //erst wenn richtiges Bild gewählt
 fs := TFileStream.Create(bildname, fmOpenRead);

Außerdem kannst Du so auch am leeren String erkennen, ob das Bild den gewünschten Abmessungen entspricht.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein