AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi TnTImage -> Welche Bildformate unterstützt?
Thema durchsuchen
Ansicht
Themen-Optionen

TnTImage -> Welche Bildformate unterstützt?

Ein Thema von DualCoreCpu · begonnen am 28. Jun 2017 · letzter Beitrag vom 5. Jul 2017
Antwort Antwort
DualCoreCpu
(Gast)

n/a Beiträge
 
#1

AW: TnTImage -> Welche Bildformate unterstützt?

  Alt 1. Jul 2017, 08:21
Leider muss ich noch mal nerven. Ich erhalte beim Drag eine EAccessViolation an dieser Stelle:

Delphi-Quellcode:
    FFileName := String(Dateiname);
    Image.Picture.LoadFromFile(FFileName); //Hier Knallt es! Warum????
Bin mir gar nicht mehr so sicher, ob sich die Installation der, wenn auch kostenlosen, Delphi Starter wirklich lohnt. Exceptions dieser Art bekomme ich ja wohl dort genauso.

Das wäre ein Feature Request. Der Compiler möge in solcher oder ähnlicher Situation den Code so erzeugen, dass er läuft. Heißt, die nötigen Datenformatanpassungen erkennen und vornehmen.

Geändert von DualCoreCpu ( 1. Jul 2017 um 08:24 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: TnTImage -> Welche Bildformate unterstützt?

  Alt 1. Jul 2017, 11:16
Könntest Du uns bitte die Fehlermeldung "spendieren".

Einfach im Fehlerdialog Strg+C drücken und dann hier per STRG+V zwischen Code-Tags einfügen.

So ist die Fehlerbeschreibung etwas dürftig.

Die erste Vermutung wäre mal, das Image nicht inizialisiert ist. Dann käme ein EAccessViolation.

Ansonsten poste bitte mal etwas mehr vom Quelltext vor der Fehlerstelle.

Oder BreakPoint vor die fehlerhafte Stelle und dann schrittweise durchgehen, bis zur konkreten Fehlerstelle. Eventuell kann man dann da etwas besser erkennen, wo die Fehlerursache liegen könnte.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TnTImage -> Welche Bildformate unterstützt?

  Alt 1. Jul 2017, 12:14
Hallo,
Ich erhalte beim Drag eine EAccessViolation an dieser Stelle: Die zwei Zeilen sind zu wenig.
Poste die ganze OnAccept-Methode.
Der TypeCast auf String sieht schon sehr verdächtig aus.
Heiko
  Mit Zitat antworten Zitat
DualCoreCpu
(Gast)

n/a Beiträge
 
#4

AW: TnTImage -> Welche Bildformate unterstützt?

  Alt 1. Jul 2017, 15:58
Hallo,
Ich erhalte beim Drag eine EAccessViolation an dieser Stelle: Die zwei Zeilen sind zu wenig.
Poste die ganze OnAccept-Methode.
Der TypeCast auf String sieht schon sehr verdächtig aus.
Oh, das hab ich noch gar nicht. Nur wie oben im Ersten Post zu sehen, die WMDROPFILES Methode, die letzlich eine Windows Message absetzt.

Wie sähe der Quellcode innerhalb der DragAccept Methode aus? Wäre der so viel anders?
  Mit Zitat antworten Zitat
DualCoreCpu
(Gast)

n/a Beiträge
 
#5

AW: TnTImage -> Welche Bildformate unterstützt?

  Alt 1. Jul 2017, 20:31
Könntest Du uns bitte die Fehlermeldung "spendieren".
Up's, wie kann ich detailliertere Fehlermeldungen in Turbo Delphi 2006 einstellen? Ich habe alles auf Standard.

Einfach im Fehlerdialog Strg+C drücken und dann hier per STRG+V zwischen Code-Tags einfügen.
Das weiß ich.

So ist die Fehlerbeschreibung etwas dürftig.
Wenn ich bloß wüsste, wie ich eine datailliertere Fehlermeldung erhalte. Kann ich das in der IDE irgendwo einstellen. (Turbo Delphi 2006) Portable Version.
Kann Windows 10 .NET in der von Turbo Delphi verlangten Version, ohne dazu die Preregs mit installieren zu müssen? (Falls die detaillierteren Fehlermeldungen nur in der zusammen mit .NET installierten Version verfügbar sein sollten, wie das auch mit der integrierten Hilfe der Fall ist. Hätte aber noch Delphi 7 Personal.

Die erste Vermutung wäre mal, das Image nicht inizialisiert ist. Dann käme ein EAccessViolation.
Dachte ich auch gerade, aber Image ist per FormDesigner und Komponentenpalette auf das Formular geklickt. Kann es denn da immer noch sein, dass die Kompo dann nicht korrekt initialisiert ist?

Welche Kompos betrifft das generell, wenn es das ist?

Ansonsten poste bitte mal etwas mehr vom Quelltext vor der Fehlerstelle.
Oben im ersten Post ist der gesamte Quelltext. Ein angepasstes Drag/Drop Beispiel aus dem Delphi Kochbuch von Elmar Warken. Image und ListView habe ich dann hinzugefügt. Auch das TMemo. Habe mir faktisch das Beispiel aus dem Buch für meine Zwecke angepasst.

Oder BreakPoint vor die fehlerhafte Stelle und dann schrittweise durchgehen, bis zur konkreten Fehlerstelle. Eventuell kann man dann da etwas besser erkennen, wo die Fehlerursache liegen könnte.
Das ist zumindest ein Versuch Wert.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: TnTImage -> Welche Bildformate unterstützt?

  Alt 1. Jul 2017, 20:39
Mir würde eigentlich erstmal die Fehlermeldung reichen, die Du bekommst, wenn Du das Programm einfach mal so startest, egal, ob die nun detailreich ist oder nicht. Nur das, was auch der Anwender zu sehen bekommen würde, wenn er das Programm startet und dann der Fehler auftritt.
  Mit Zitat antworten Zitat
DualCoreCpu
(Gast)

n/a Beiträge
 
#7

AW: TnTImage -> Welche Bildformate unterstützt?

  Alt 2. Jul 2017, 11:22
Mir würde eigentlich erstmal die Fehlermeldung reichen, die Du bekommst, wenn Du das Programm einfach mal so startest, egal, ob die nun detailreich ist oder nicht. Nur das, was auch der Anwender zu sehen bekommen würde, wenn er das Programm startet und dann der Fehler auftritt.
Erste Gelegenheit für Exception bei $75C0A9F2. Exception-Klasse EInvalidGraphic mit Meldung 'Unbekannte Bilddateierweiterung (.)'. Prozess imgdrag.exe (924)

Dies, nachdem ich den Quelltextabschnitt meines ersten Post wie folgt geändert habe:

Delphi-Quellcode:
    [B]if not Assigned(Image) then Image := TImage.Create(self);
[/B]
//So bleibt die vorherige EAccessViolation fern.
//Hatte vorausgesetzt, dass eine Komponente, die auf das Formular
//geklickt wurde, auch automatisch erzeugt wird
//Die Fehlermeldung sagt da nur "Lesen von Adresse .... "
    FFileName := String(Dateiname);
    Image.Picture.LoadFromFile(FFileName);
//In der darunter stehenden Zeile kommt nun die oben genannte Exception
    FFileList.AddObject(StrPas(Dateiname),Image);
//---------------------------------------------------------------------
    Memo.Lines.Add(FFileList.Strings[FFileList.Count-1]);

    PictureList.Items.Item[PictureList.Items.Count-1].assign(Image);
    //PictureList.Items.Item[PictureList.Items.Count-1].Data := Item.Data;
sonstiger Quellcode, siehe oben, erster Post!

Ich dachte, die Image-Komponente unterstütze ALLE Bildformate. Die Exception kommt auch bei .bmp Dateien. Habe zum Test eine .bmp Datei verwendet, von der ein in .jpg umgewandeltes Pendant existiert. Habe alles auf die Verwendung ausschließlich der Image Komponente zurück geändert.

Die Unit jpeg ist eingebunden.

Geändert von DualCoreCpu ( 2. Jul 2017 um 11:26 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: TnTImage -> Welche Bildformate unterstützt?

  Alt 2. Jul 2017, 12:04
In der Fehlermeldung steht
Code:
'Unbekannte Bilddateierweiterung (.)'
Hier würde ich zuerst einmal den Dateinamen überprüfen, es scheint so, als könnte die Dateiendung, die zur Erkennung des Bildtypes herangezogen wird, nicht korrekt erkannt werden.

Eine Komponente, die man in der IDE auf ein Formular pappt, wird automatisch erstellt.

Wenn Image eine derartige Komponente ist, sollte diese Abfrage nicht erforderlich sein.

if not Assigned(Image) then Image := TImage.Create(self);

Wenn aber doch, so wird die Komponente auf dem Formular irgendwo (irrtümlich?) freigegeben.

Aus dem bisher bekannten Quelltext lässt sich das aber nicht erkennen.

Schau bitte zuerst mal nach, was hier FFileName := String(Dateiname); herauskommt. Ist das ein gültiger Dateiname mit vollständigem Pfad und Dateiendung?
  Mit Zitat antworten Zitat
DualCoreCpu
(Gast)

n/a Beiträge
 
#9

AW: TnTImage -> Welche Bildformate unterstützt?

  Alt 2. Jul 2017, 16:49
Danke @nahpets, Der Dateiname war die Ursache der Exception.

Ein Teilproblem ist somit gelöst!

Ein Fall für DUnit! Das aber wird ein gesonderter Strang.

Nun aber macht diese Zeile Schwierigkeiten. Warum das nun wieder?

PictureList.Items.Item[PictureList.Items.Count-1].assign(Image); Diese Zeile bringt dieselbe Exception:

EAccessViolation -> Zugriffsverletzung bei Adresse ...

PictureList.Items.Item[PictureList.Items.Count-1].Data := Image.Picture Wie also muss ich das Bild zuweisen?

Picturelist ist meine TListView.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz