*.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: 6194
- 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: 6194
- 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.
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 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: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
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 grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
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.
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
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.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: *.wmf nicht erkannt
Mathias hat geschrieben:Ich habe ein altes Delphi-Programm konvertiert, dort habe ich mitCode: 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 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: 6194
- 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;
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 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: 6194
- 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: 6194
- 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) 2081 mal betrachtet
-
- Bildschirmfoto vom 2020-02-14 13-15-38.png (18.62 KiB) 2081 mal betrachtet
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot