Re: Webseitenmarkiertes direkt ins TDBVRichViewEdit kopieren
Posted: Sun Aug 09, 2026 9:52 am
Die Grafiken finde ich auch nicht mehr im Internet.
Inzwisch habe ich es über die IDE hinbekommen, alle Grafik- und formatierte Textstellen zu laden und anzuzeigen. Einige Grafiken werden aber mit einem roten X statt der Grafik angezeigt.
Vorher war es so, dass beim Ausführen aus der IDE das Programm mit einem Fehlerhinweisfenster stoppte. Wenn man OK bestätigte und anschließend F9 drückte wurde die Grafik mit einem roten X statt der Grafik angezeigt (siehe obigen Absatz).
Führte ich das Ganze mit der kompolierten EXE aus, wurde kein Fehler angezeigt und ebenfalls eine Grafik mit einem roten X statt der 'richtigen' Grafik angezeigt.
Ich habe das Problem, dass beim Ausführen über die IDE kein Fehler angezeigt wird daturch gelöst, indem ich im Delphi-Menü
"Tools / Debugger-Optionen / Sprach-Exceptions" der Liste der zu ignorierenden Exception-Typen "ERichViewOpenError" hinzugefügt habe ("Bei Delphi-Exceptions stoppen" habe ich aktiv gelassen).
Dann habe ich in der UNIT RVClasses.pas folgende Änderungen (sie sind mit //jb gekennzeichnet) vorgenommen:
constructor TRVFileStream.Create(const AFileName: TRVUnicodeString; Mode: Word);
{$IFDEF RICHVIEWDEF6}{$IFnDEF FPC}
var
LShareMode: Word;
{$ENDIF}{$ENDIF}
begin
{$R-} //jb - Bereichsprüfung für diese Funktion AUS xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{$IFDEF FPC}
inherited Create(RVU_UnicodeToUIString(AFileName), Mode);
{$ELSE}
{$IFDEF RICHVIEWDEF6}
if (Mode and fmCreate = fmCreate) then
begin
LShareMode := Mode and $FF;
if LShareMode = $FF then
LShareMode := fmShareExclusive; // For compat in case $FFFF passed as Mode
inherited Create(FileCreateW(AFileName, LShareMode, 0));
if Handle = {$IFDEF RICHVIEWDEF2009}THandle{$ENDIF}(-1) then
raise EFCreateError.CreateResFmt(@SFCreateError, [ExpandFileName(AFileName)]);
end
else
begin
inherited Create(FileOpenW(AFileName, Mode));
if Handle = {$IFDEF RICHVIEWDEF2009}THandle{$ENDIF}(-1) then //jb neu xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{$IFDEF MY_SILENT_OPEN}
raise ERichViewFileOpenError.CreateResFmt(@SFOpenError, [ExpandFileName(AFileName)]);
{$ELSE}
raise EFOpenError.CreateResFmt(@SFOpenError, [ExpandFileName(AFileName)]);
{$ENDIF} //jb neu-Ende xxxxxxxxxxxxxxxxxxxxxxxxxx
end;
{$ELSE}
inherited Create(RVU_UnicodeToString(AFileName), Mode);
{$ENDIF}
{$ENDIF}
FFileName := AFileName;
{$R+} //jb Bereichsprüfung wieder EIN xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
end;
Jedenfalls erhalte ich im IDE-Modus keine Fehlermeldung mehr und ladbare und nicht ladbare Grafiken (als fehlerhaft durch das rote X gekennzeichnet) werden angezeigt.
;it dieser Lösung kann z. Z. leben. Vielen Dank jedenfalls für deine Mühen.
PS: Diesen (gesamten) Beitrag kannst du gerne löschen, da er durch die vielen Antworten unübersichtlich geworden ist und keinen vollständigen Lösungs-Code anbietet.
Inzwisch habe ich es über die IDE hinbekommen, alle Grafik- und formatierte Textstellen zu laden und anzuzeigen. Einige Grafiken werden aber mit einem roten X statt der Grafik angezeigt.
Vorher war es so, dass beim Ausführen aus der IDE das Programm mit einem Fehlerhinweisfenster stoppte. Wenn man OK bestätigte und anschließend F9 drückte wurde die Grafik mit einem roten X statt der Grafik angezeigt (siehe obigen Absatz).
Führte ich das Ganze mit der kompolierten EXE aus, wurde kein Fehler angezeigt und ebenfalls eine Grafik mit einem roten X statt der 'richtigen' Grafik angezeigt.
Ich habe das Problem, dass beim Ausführen über die IDE kein Fehler angezeigt wird daturch gelöst, indem ich im Delphi-Menü
"Tools / Debugger-Optionen / Sprach-Exceptions" der Liste der zu ignorierenden Exception-Typen "ERichViewOpenError" hinzugefügt habe ("Bei Delphi-Exceptions stoppen" habe ich aktiv gelassen).
Dann habe ich in der UNIT RVClasses.pas folgende Änderungen (sie sind mit //jb gekennzeichnet) vorgenommen:
constructor TRVFileStream.Create(const AFileName: TRVUnicodeString; Mode: Word);
{$IFDEF RICHVIEWDEF6}{$IFnDEF FPC}
var
LShareMode: Word;
{$ENDIF}{$ENDIF}
begin
{$R-} //jb - Bereichsprüfung für diese Funktion AUS xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{$IFDEF FPC}
inherited Create(RVU_UnicodeToUIString(AFileName), Mode);
{$ELSE}
{$IFDEF RICHVIEWDEF6}
if (Mode and fmCreate = fmCreate) then
begin
LShareMode := Mode and $FF;
if LShareMode = $FF then
LShareMode := fmShareExclusive; // For compat in case $FFFF passed as Mode
inherited Create(FileCreateW(AFileName, LShareMode, 0));
if Handle = {$IFDEF RICHVIEWDEF2009}THandle{$ENDIF}(-1) then
raise EFCreateError.CreateResFmt(@SFCreateError, [ExpandFileName(AFileName)]);
end
else
begin
inherited Create(FileOpenW(AFileName, Mode));
if Handle = {$IFDEF RICHVIEWDEF2009}THandle{$ENDIF}(-1) then //jb neu xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{$IFDEF MY_SILENT_OPEN}
raise ERichViewFileOpenError.CreateResFmt(@SFOpenError, [ExpandFileName(AFileName)]);
{$ELSE}
raise EFOpenError.CreateResFmt(@SFOpenError, [ExpandFileName(AFileName)]);
{$ENDIF} //jb neu-Ende xxxxxxxxxxxxxxxxxxxxxxxxxx
end;
{$ELSE}
inherited Create(RVU_UnicodeToString(AFileName), Mode);
{$ENDIF}
{$ENDIF}
FFileName := AFileName;
{$R+} //jb Bereichsprüfung wieder EIN xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
end;
Jedenfalls erhalte ich im IDE-Modus keine Fehlermeldung mehr und ladbare und nicht ladbare Grafiken (als fehlerhaft durch das rote X gekennzeichnet) werden angezeigt.
;it dieser Lösung kann z. Z. leben. Vielen Dank jedenfalls für deine Mühen.
PS: Diesen (gesamten) Beitrag kannst du gerne löschen, da er durch die vielen Antworten unübersichtlich geworden ist und keinen vollständigen Lösungs-Code anbietet.