*.wmf nicht erkannt

Rund um die LCL und andere Komponenten

Re: *.wmf nicht erkannt

Beitragvon wp_xyz » 13. Aug 2016, 17:15 Re: *.wmf nicht erkannt

fpvectorial muss man nicht installieren, sondern nur übersetzen. Unter "Package" / "Package-Datei (.lpk) öffnen" zu deinem Ordner navigieren und fpvectorialpkg.lpk öffnen, "Kompilieren" klicken - fertig. Das Package dann zu einem Projekt hinzufügen, so dass dir die Routinen zur Verfügung stehen.

Schau dir zuerst mein Demo wmfViewer an (im Ordner examples).

Eine Warnung vorab: fpvectorial ist noch lange nicht fertig, und die meisten Reader/Writer sind noch eine Riesenbaustelle.
wp_xyz
 
Beiträge: 3073
Registriert: 8. Apr 2011, 08:01

Beitragvon Mathias » 13. Aug 2016, 17:33 Re: *.wmf nicht erkannt

Wieso kommt fpvcetorial nicht unter" Package/Installierte Packages einrichten..." ?
Ist dies, weil es noch eine Riesenbaustelle ist, oder hat dies einen anderen Grund.

ZB. ist opengl auch im componets-Ordner, und diese Package erscheint unter "Package/Installierte Packages einrichten... ".

Ich werde es heute abend mal probieren, ob meine wmf gefressen werden.
Es sind ganz einfache s/w Zeichnungen.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4416
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 13. Aug 2016, 17:46 Re: *.wmf nicht erkannt

Weil es ein reines Runtime-Package ist, und dies wiederum, weil es keine installierbaren Komponenten enthält. Ich habe gerade bei Version 1.4.4 nachgesehen, damals tauchte es noch unter "Installierte Packages einrichten" auf, aber da war es auch noch fälschlicherweise als "Design- und Runtime-Package" konfiguriert. (Du kannst das prüfen unter den Optionen des Packages > IDE-Integration > Package-Typ).

Hoffentlich enthalten deine Zeichnungen keine gefüllten Polygone mit Löchern - hier hat die Polygon-Füllroutine von fpvectorial einen Bug, die die Löcher übermalt.
wp_xyz
 
Beiträge: 3073
Registriert: 8. Apr 2011, 08:01

Beitragvon Mathias » 13. Aug 2016, 20:45 Re: *.wmf nicht erkannt

Ich habe dein Beispiel auf Minimum abgespeckt, und es läuft mit meinen wmf.
Code: Alles auswählen
procedure TForm1.LoadImage(const AFileName: string);
begin
  FreeAndNil(FVec);
  FVec := TvVectorialDocument.Create;
  FVec.ReadFromFile(AFilename);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  LoadImage('36890E-Ax-Bx-Cx.wmf');
end;
 
procedure TForm1.FormClick(Sender: TObject);
begin
  LoadImage('36890E-SS-Ay-By-Cy-Dx.wmf');
  Repaint;
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  FreeAndNil(FVec);
end;
 
procedure TForm1.Panel1Paint(Sender: TObject);
var
  scalex, scaley: single;
  Page: TvPage;
begin
  if FVec <> nil then begin
    Page := FVec.GetPage(0);
 
    with Panel1 do begin
      scalex := Width / Page.Width;
      scaley := Height / Page.Height;
 
      Canvas.Brush.Color := clWindow;
      Canvas.FillRect(0, 0, Width, Height);
 
      Page.Render(Canvas, 0, 0, scalex, scaley);
    end;
  end;
end;
 
end.


Was mich verwundert, das es hier keine SIGSEV gibt.
Code: Alles auswählen
begin
  FreeAndNil(FVec);
 

weile folgendes ein SIGSEV auslöst.
Code: Alles auswählen
 
var
  o:TObject;
begin
  FreeAndNil(o);
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4416
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 13. Aug 2016, 20:59 Re: *.wmf nicht erkannt

Wenn du wie ich FVec als Objektvariable des Formulars deklariert hast, ist es bei der ersten Verwendung mit nil initialisiert, d.h. FreeAndNil macht gar nichts. Bei der Verwendung als lokaler Variablen so wie in deinem 2. Beispiel, ist o nicht initialisiert, d.h. ist weder nil noch zeigt es auf allokierten Speicher.
wp_xyz
 
Beiträge: 3073
Registriert: 8. Apr 2011, 08:01

Beitragvon Mathias » 14. Aug 2016, 16:10 Re: *.wmf nicht erkannt

wp_xyz hat geschrieben:Wenn du wie ich FVec als Objektvariable des Formulars deklariert hast, ist es bei der ersten Verwendung mit nil initialisiert, d.h. FreeAndNil macht gar nichts. Bei der Verwendung als lokaler Variablen so wie in deinem 2. Beispiel, ist o nicht initialisiert, d.h. ist weder nil noch zeigt es auf allokierten Speicher.


Stimmt, so ein Code gibt kein SIGSEV.
Code: Alles auswählen
var
  o: TObject;
begin
  o := nil;
  o.Free;
end;   

In dem Fall, ist die Free-Methode noch recht intelligent.

PS;
Schau dir zuerst mein Demo wmfViewer an (im Ordner examples).

Bist du beim Lazarus Team dabei, da dort Code von dir vorhanden ist ?
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4416
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 14. Aug 2016, 17:34 Re: *.wmf nicht erkannt

Mathias hat geschrieben:Bist du beim Lazarus Team dabei, da dort Code von dir vorhanden ist ?

Weiß nicht, das klingt so hochtrabend... Ich habe früher viel Code für TAChart gepostet, und da hat man mir sukzessive immer mehr Schreibrechte im Repository und im CCR eingeräumt.
wp_xyz
 
Beiträge: 3073
Registriert: 8. Apr 2011, 08:01

Beitragvon Mathias » 16. Aug 2016, 20:35 Re: *.wmf nicht erkannt

Eine Warnung vorab: fpvectorial ist noch lange nicht fertig, und die meisten Reader/Writer sind noch eine Riesenbaustelle.

Ich hatte letzte Zeit fast täglich geguckt was für Dateien in de Trunk geändert wurden.
So wie es aussieht wird täglich an fpvectorial gearbeitet. :wink:
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4416
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Mathias » 9. Feb 2020, 15:24 Re: *.wmf nicht erkannt

Mathias hat geschrieben:Ich habe ein altes Delphi-Programm konvertiert, dort habe ich mit
Code: Alles auswählen
Image1.Picture.LoadFromFile(KabelTyp + '.wmf')

wmf-Dateien eingebunden.
Sowohl unter Windows, wie Linux, kommt Format unbekannt.

Was ist die einfachste und sauberste Lösung, um diese Dateien auch mit Lazarus zu verwenden ?

Gut, ich könnte es in PNG umwandeln, aber da es sich um Linienzeichnungen handelt, will ich dies eigentlich nur zur Not machen.

Da das Post über 3½ Jahre alt ist, will ich nachfragen, ob unterdessen in Sache WMF in Lazarus sich etwas bewegt hat ?
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4416
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 10. Feb 2020, 00:20 Re: *.wmf nicht erkannt

Meines Wissens nicht. Du musst weiterhin den Umweg über fpvectorial gehen.
wp_xyz
 
Beiträge: 3073
Registriert: 8. Apr 2011, 08:01

Beitragvon Mathias » 12. Feb 2020, 15:43 Re: *.wmf nicht erkannt

Ich habe eine Miniprogramm geschrieben mi folgender Funktion:

Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
  page: TvPage;
  FVec: TvVectorialDocument;
begin
  FVec := TvVectorialDocument.Create;
  FVec.ReadFromFile('test.wmf');
  page := FVec.GetPage(0);
 
  Image1.Picture.Bitmap.Width := round(page.Width);
  Image1.Picture.Bitmap.Height := round(page.Height);
 
  Image1.Picture.Bitmap.Canvas.Brush.Color := clGreen;
  Image1.Picture.Bitmap.Canvas.FillRect(0, 0, Image1.Picture.Bitmap.Width,
    Image1.Picture.Bitmap.Height);
 
  page.Render(Image1.Picture.Bitmap.Canvas, 0, 0, 1, 1);
  FVec.Free;
end

Dies funktioniert fehlerfrei.

Füge ich den gleichen Code in mein komplexes Programm ein, kommt folgender Fehler:

Code: Alles auswählen
Projekt KabelPruefer hat Exception-Klasse »Exception« ausgelöst mit der Meldung:
Unsupported vector graphics format.


Ich habe als Versuch getestet, ob er die Datei findet.
Code: Alles auswählen
  if FileExists('test.wmf') then ShowMessage('Datei vorhanden');
  FVec.ReadFromFile('test.wmf'); // Hier knallts !

Es ist die gleiche test.wmf wie oben.

Woran könnte dies liegen ?
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4416
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Winni » 12. Feb 2020, 16:10 Re: *.wmf nicht erkannt

Hi!

Package --> Open Package File (*.lpk)

Winni
Winni
 
Beiträge: 25
Registriert: 2. Mär 2009, 16:45
Wohnort: Fast Dänemark
OS, Lazarus, FPC: Laz2.06, fpc 3.04 | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 12. Feb 2020, 16:15 Re: *.wmf nicht erkannt

Bin jetzt nicht mehr so mit fpvectorial bewandert. Nachdem das Package von felipe stammt, genauso wie fpspreadsheet, wird er es so gemacht haben, dass nur solche Dateiformate eingebunden werden, deren Reader/Writer in der uses-Anweisung steht. Also: Hast du bei deinem Kabelpruefer-Programm die Unit "wmfvectorialreader" in der uses-Zeile?
wp_xyz
 
Beiträge: 3073
Registriert: 8. Apr 2011, 08:01

Beitragvon Mathias » 12. Feb 2020, 16:33 Re: *.wmf nicht erkannt

Danke für die Infos werde es bei Gelegenheit probieren.

Könnte des ein ähnliches Problem sein, so wei es bei der Unit Printers auch der Fall ist ?
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4416
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Mathias » 14. Feb 2020, 13:17 Re: *.wmf nicht erkannt

Ich habe jetzt folgende unit eingebunden: "wmfvectorialreader"
Jetzt kommt die obige Fehlermeldung nicht mehr, dafür meldet sich der Debugger. Wen ich den Debbuger ausschalte, dann kommt ein SIGSEGV.

Bei dem Testprogramm hat die unit "wmfvectorialreader" keinen Einfluss.

Die Packages "fpvectorialpkg", ist ein beiden Projekten eingebunden. Siehe Anhang.
Dateianhänge
Bildschirmfoto vom 2020-02-14 13-17-11.png
Bildschirmfoto vom 2020-02-14 13-17-11.png (27.09 KiB) 84-mal betrachtet
Bildschirmfoto vom 2020-02-14 13-15-38.png
Bildschirmfoto vom 2020-02-14 13-15-38.png (18.62 KiB) 84-mal betrachtet
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4416
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

» Weitere Beiträge siehe nächste Seite »
VorherigeNächste

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: MSN [Bot] und 5 Gäste

porpoises-institution
accuracy-worried