![]() |
Speichern einer Serie von Dateien
Hallo!
folgender Wunsch: es soll eine Serie von Bildern gespeichert werden nach dem Schema Dateiname1.bmp Dateiname2.bmp Dateiname3.bmp Der User soll via herkömmlichen TSaveDialog Ort und Name ein mal aussuchen, 1, 2, 3, ... wird automatisch ergänzt und eben nacheinander abgespeichert. Nun habe ich mal folgendes probiert:
Delphi-Quellcode:
das geht aber so einmal nicht, da nur die erste Datei abgespeichert wird.
With SaveDialog1 do
begin if execute then begin for i:=1 to 10 do begin //sinngemäß hier: saveimage(filename+inttostr(i)); end; end; end; Tipps und Rat? Danke! cltom |
Re: Speichern einer Serie von Dateien
Hallo,
Zitat:
Bild: Es wird nur das erste von zehn Bildern gespeichert, das aber 10x. Datei: Das Bild wird nur in einer Datei abgespeichert, nicht wie gewünscht in 10. Ich gehe aber mal davon aus, dass Du meinst, dass nur das erste Deiner 10 Bilder 10x gespeichert wird. Ich kann aufgrund Deines Codes nur Vermutungen anstellen, da die Erläuterungen zu 'saveimage' fehlen. Irgendwo musst Du natürlich das zu speichernde Bild auch wechseln. Entweder in Deiner SaveImage-Methode oder vorher, also in etwa so:
Delphi-Quellcode:
With SaveDialog1 do
begin if execute then begin for i:=1 to 10 do begin //zuerst sinngemäss soetwas: wechsleimage; //sinngemäß hier: saveimage(filename+inttostr(i)); end; end; end; |
Re: Speichern einer Serie von Dateien
hmm, ok. es geht um einzelne Bilder. Das saveimage ist eine Methode von TRChart, einer Chart-Komponente aus der SDL-Component Suite.
das saveimage sieht also in Wahrheit so aus:
Delphi-Quellcode:
Meine Vermutung war, dass der Ansatz mit dem TSaveDialog so nicht geht, darum habe ich die Details innendrin mal weggelassen.
RChart1.CopyToBMP(filename+inttostr(i),true)
|
Re: Speichern einer Serie von Dateien
ps. es wird übrigens nur das erste Bild abgespeichert.
Um das ganze noch zu erklären, ich erzeuge der Reihe nach Diagramme im RChart und will die dann der Reihe nach abspeichern. Das Erzeugen klappt, sie werden der reihe nach angezeigt, doch abgespeichert wird nur das erste unter dem namen 'dateiname1.bmp'. |
Re: Speichern einer Serie von Dateien
Ich vermute, dass es mit dem Dateinamen Probleme gibt. Es wird der Index i am Ende angehängt. Damit lautet der Dateiname dateiname.bmp1 .. dateiname.bmp10
Hier ein Codeschnipsel (nicht getestet) der das regeln sollte:
Delphi-Quellcode:
Die Idee ist es, den Dateinamen vorher mit einem Platzhalter für den Index auszustatten.
procedure Speichern;
var strFileName: String; i: Integer; begin if SaveDialog1.Execute then begin strFileName := SaveDialog1.FileName; Insert('%d', strFileName, LastDelimiter('.', strFileName)-1); for i := 1 to 10 do begin WechsleImage(i); SaveImage(Format(strFileName, [i]); end; end; end; Hoffe das hilft Dir weiter. Grüße Michael |
Re: Speichern einer Serie von Dateien
Zitat:
Edit: Wenn Du das so machst,
Delphi-Quellcode:
dann musst Du natürlich vor dem Aufruf von CopyToBMP auch das nächste Bild in RChart1 laden.
RChart1.CopyToBMP(filename+inttostr(i),true)
|
Re: Speichern einer Serie von Dateien
Zitat:
Danke Dir! |
Re: Speichern einer Serie von Dateien
Zitat:
Danke aber dennoch!! |
Re: Speichern einer Serie von Dateien
P.S. Der Ordnung halber:
Das -1 muss nicht sein, so kommt es an die richtige stelle:
Delphi-Quellcode:
Insert('%d', strFileName, LastDelimiter('.', strFileName));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 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