*.wmf nicht erkannt
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.
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.
-
- Beiträge: 6900
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
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.
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 grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
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.
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.
-
- Beiträge: 6900
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: *.wmf nicht erkannt
Ich habe dein Beispiel auf Minimum abgespeckt, und es läuft mit meinen wmf.
Was mich verwundert, das es hier keine SIGSEV gibt.
weile folgendes ein SIGSEV auslöst.
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.
Code: Alles auswählen
begin
FreeAndNil(FVec);
Code: Alles auswählen
var
o:TObject;
begin
FreeAndNil(o);
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
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.
-
- Beiträge: 6900
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: *.wmf nicht erkannt
Stimmt, so ein Code gibt kein SIGSEV.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.
Code: Alles auswählen
var
o: TObject;
begin
o := nil;
o.Free;
end;
PS;
Bist du beim Lazarus Team dabei, da dort Code von dir vorhanden ist ?Schau dir zuerst mein Demo wmfViewer an (im Ordner examples).
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: *.wmf nicht erkannt
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.Mathias hat geschrieben:Bist du beim Lazarus Team dabei, da dort Code von dir vorhanden ist ?
-
- Beiträge: 6900
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: *.wmf nicht erkannt
Ich hatte letzte Zeit fast täglich geguckt was für Dateien in de Trunk geändert wurden.Eine Warnung vorab: fpvectorial ist noch lange nicht fertig, und die meisten Reader/Writer sind noch eine Riesenbaustelle.
So wie es aussieht wird täglich an fpvectorial gearbeitet.

Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 6900
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: *.wmf nicht erkannt
Da das Post über 3½ Jahre alt ist, will ich nachfragen, ob unterdessen in Sache WMF in Lazarus sich etwas bewegt hat ?Mathias hat geschrieben:Ich habe ein altes Delphi-Programm konvertiert, dort habe ich mitwmf-Dateien eingebunden.Code: Alles auswählen
Image1.Picture.LoadFromFile(KabelTyp + '.wmf');
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.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: *.wmf nicht erkannt
Meines Wissens nicht. Du musst weiterhin den Umweg über fpvectorial gehen.
-
- Beiträge: 6900
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: *.wmf nicht erkannt
Ich habe eine Miniprogramm geschrieben mi folgender Funktion:
Dies funktioniert fehlerfrei.
Füge ich den gleichen Code in mein komplexes Programm ein, kommt folgender Fehler:
Ich habe als Versuch getestet, ob er die Datei findet.
Es ist die gleiche test.wmf wie oben.
Woran könnte dies liegen ?
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;
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.
Code: Alles auswählen
if FileExists('test.wmf') then ShowMessage('Datei vorhanden');
FVec.ReadFromFile('test.wmf'); // Hier knallts !
Woran könnte dies liegen ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: *.wmf nicht erkannt
Hi!
Package --> Open Package File (*.lpk)
Winni
Package --> Open Package File (*.lpk)
Winni
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?
-
- Beiträge: 6900
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
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 ?
Könnte des ein ähnliches Problem sein, so wei es bei der Unit Printers auch der Fall ist ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 6900
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
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.
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 (27.09 KiB) 2270 mal betrachtet
-
- Bildschirmfoto vom 2020-02-14 13-15-38.png (18.62 KiB) 2270 mal betrachtet
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot