Je développe une application dans Delphi. J'essaie d'extraire une image qui est enregistrée dans la base de données, enregistrez-le à TMemoryStream
et charger la même image au TImage
contrôle placé sur un autre formulaire qui va remplir dynamiquement. Je reçois erreur de violation d'accès lorsque j'essaie de charger l'image du flux au contrôle d'image placé sur le formulaire.Erreur de violation d'accès à delphi lors de la sauvegarde/du chargement de l'image vers/depuis le flux
Description de l'erreur est la suivante
violation d'accès à 00B548C d'adresse dans le module abc.exe. Lire d'adresse 0000000
Mon extrait de code est comme suit
UniConnection1.Connected := true;
UniQuery2.SQL.Text := 'Select image from userplays where id = :id';
UniQuery2.Params.ParamByName('id').Value := idpub1;
UniQuery2.Open;
if UniQuery2.FieldByName('image').AsString <> '' then
begin
try
Stream121 := TMemoryStream.Create;
TBlobField(UniQuery2.FieldByName('image')).SaveToStream(Stream121);
Stream121.Position := 0;
if Assigned(Stream121) then
begin
Image1.Picture.Graphic.LoadFromStream(Stream121);
Image1.Update;
end;
finally
Stream121.Free;
end;
end;
Avez-vous vérifié pour Image1.Picture.Graphic <> nil? Savez-vous quel type d'image est dans la base de données? –
jpg image est dans la base de données ... en fait, je le teste avec seulement la ligne de base de données ayant une image. –
Donc faire du débogage. Vous avez un pointeur 'nil' quelque part où vous ne vous attendez pas. Votre travail consiste à déterminer où. Si vous ne savez pas comment déboguer ce code, alors votre vrai problème n'est pas ce code, mais vos compétences de débogage. Corrigez les compétences de débogage et ce problème disparaîtra, et tous les autres l'aimeront dans le futur. En d'autres termes, chercher à acquérir des compétences. –