Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi bild speichern unter (https://www.delphipraxis.net/59158-bild-speichern-unter.html)

dahead 18. Dez 2005 15:45

Re: bild speichern unter
 
Zitat:

Zitat von f4r
das hab ich gemacht weil das label sowieso schon da war und die vollständige quelle beinhalet da es ja ne cd w ird

gruss
f4r


p.s. ich bin noch weniger als ein amateur :D also nehme ich das mal als kompliment :D

das mit dem "amateurhaft" war nicht böse gemeint. nur wirst du später merken, dass es auf dauer zu nichts führt. nehmen wir mal an, du willst den dateinamen in einer ini-datei speichern. dann übergibst du dort INI.WriteString('Header', 'Path', Label3.Caption). Dann hast du nicht nur ein label, sondern mal 20 oder noch mehr.

irgendwann verlierst du dann den überblick was jetzt egtl. label3 war. oder aber du verschreibst dich aus versehen und speicherst label4 ab. dann klappt was nicht, und den fehler findest du höchstwahrscheinlich auch nicht so schnell.

daher solltest du deine labels (und alle anderen komponenten) sinnvoll benennen (z.B. LBLFilename o.ä.). wenn du in einigen monaten das projekt nochmal überarbeiten wilslt, hast du dann viel weniger arbeit und einarbeitungszeit. ist nur ein tipp.

edit: hat es jetzt egtl. geklappt?

f4r 18. Dez 2005 15:50

Re: bild speichern unter
 
wolt grad posten :D

ja die dialogbox geht auf so wie es soll auch mit desktop und aber ich krich nix gespeichert

wie mach ich dem jetzt klar das er das bild C:\beispielordner\beispiel.jpg mit dem namen
'Bild beipsiel.jpg) speichern soll nach auswahl vom user des ziefverzeichnisses ?

dahead 18. Dez 2005 15:54

Re: bild speichern unter
 
so würde ich das bei einem image machen:

Delphi-Quellcode:
var
  SD: TSaveDialog;
begin
  SD := TSaveDialog.Create(Self);
  with SD do
   begin
    Filter := 'Jpeg Files (*.jpg)|*.jpg';
    Title := 'Save Image to...';
    InitialDir := GetSpecialFolder(Application.Handle, CSIDL_DESKTOPDIRECTORY);
    if Execute then
     begin
      Image1.Picture.SaveToFile(Filename);
     end;
   end;
  SD.Free;
end;
oder automatisch:

Delphi-Quellcode:
  Image1.Picture.SaveToFile(IncludeTrailingPathDelimiter(GetSpecialFolder(Application.Handle, CSIDL_DESKTOPDIRECTORY)) + 'beispiel.jpg');
oder so:

Delphi-Quellcode:
var
  SD: TSaveDialog;
begin
  SD := TSaveDialog.Create(Self);
  with SD do
   begin
    Filter := 'Jpeg Files (*.jpg)|*.jpg';
    Title := 'Save Image to...';
    InitialDir := GetSpecialFolder(Application.Handle, CSIDL_DESKTOPDIRECTORY); // Initalisierungs Verzeichnis ist Desktop
    if Execute then
     begin
      Image1.Picture.SaveToFile(IncludeTrailingPathDelimiter(ExtractFileDir(Filename)) + 'beispiel.jpg'); // speichert im vom User ausgewählten Verzeichnis ab.
     end;
   end;
  SD.Free;
end;
Das IncludeTrailingPathDelimiter ergänzt das Verzeichnis um einen abschließenden Backslash.

Edit: also wäre die dritte lösung für dich am geeignetsten.

aber wenn du den benutzer nur zur auswahl eines verzeichnisses (und nicht zur nennung eines dateinamens) ermächtigen willst, solltest du dir mal den Befehl "SelectDirectory" ansehen. Da gibt es fertige Komponenten wie die Jedis (Name weiß ich gerade nicht, irgendwas mit BrowseFolder oder so) oder die standalone Komponente TBrowseForFolder (http://endimus.com).

f4r 18. Dez 2005 16:06

Re: bild speichern unter
 
Liste der Anhänge anzeigen (Anzahl: 1)
klappen tuts trotzdem krich ich n fehlerrueckmeldung (angehängt)

was ichgern noch haette ist ein bestätigung das gespeichert wurde :D wenn das geht !

gruss
f4r

dahead 18. Dez 2005 16:22

Re: bild speichern unter
 
welche variante benutzt du?

lass dir mal vor dem savetofile den dateinamen (also den kompletten, den du auch an savetofile übergibst) in einer showmessage anzeigen.

evtl. ist der backslash doppelt oder so.

edit: zur überprüfung ob gespeichert wurde kannst du den dateinamen auf vorhandensein nach dem savetofile mit fileexists prüfen (gibt true zurück, wenn datei existiert) und du solltest natürlich darauf achten, dass vorher keine exceptions aufgetreten sind.

f4r 18. Dez 2005 16:24

Re: bild speichern unter
 
Liste der Anhänge anzeigen (Anzahl: 1)
noch zwei fragen
1. wie kann ich bestimmen was in dem edit feld von savedialog drinsteht wo man den namen normalerweise einträgt ?
2. wie kann ich den string dieses edit feldes "rausholen"

im anhang nochmal was gemeint

ziel

beim öffnen des dialoges soll bild + InttoStr(x) drinnstehen
das soll der user ggf. verändern und dann abgespeichert werden

also

irgendwie hier muesste es dann doch verädenrt werden:

Image1.Picture.SaveToFile(IncludeTrailingPathDelim iter(ExtractFileDir(Filename)) + 'beispiel.jpg'); // speichert im vom User ausgewählten Verzeichnis ab.

f4r 18. Dez 2005 16:26

Re: bild speichern unter
 
Zitat:

Zitat von dahead
welche variante benutzt du?

edit: du überprüfung ob gespeichert wurde kannst du den dateinamen mit fileexists prüfen (gibt true zurück, wenn datei existiert) und du solltest natürlich darauf achten, dass vorher keine exceptions aufgetreten sind.

1. die dritte
2. wie genau geht das mit fileexists was sind exceptions (engl ? ausnahmen ?) macht aber keien sinn ?

gruss

Ratte 18. Dez 2005 16:32

Re: bild speichern unter
 
Delphi-Quellcode:
var
  SD: TSaveDialog;
begin
  SD := TSaveDialog.Create(Self);
  with SD do
   begin
    Filename := 'Bild' + inttosr(x); // <-- eingefügt
    Filter := 'Jpeg Files (*.jpg)|*.jpg';
    Title := 'Save Image to...';
    InitialDir := GetSpecialFolder(Application.Handle, CSIDL_DESKTOPDIRECTORY); // Initalisierungs Verzeichnis ist Desktop
    if Execute then
     begin
      Image1.Picture.SaveToFile(Filename); // <-- geändert
     end;
   end;
  SD.Free;
end;
Müsste das gewünschte sein.
mfg,

Ratte

dahead 18. Dez 2005 16:39

Re: bild speichern unter
 
zu deinem ersten post:

du kannst nach dem Execute des SaveDialogs folgendes ergänzen:

Delphi-Quellcode:
if Execute then
  begin
   ...
   EdtFilename.Text := Filename;
   ...
  end;
was meinst du mit "rausholen"? löschen oder verwenden?
löschen geht mit EdtFilename.Text := '';

zum anderen post:

sehe gerade, ratte hat was gepostet.

f4r 18. Dez 2005 16:42

Re: bild speichern unter
 
es funktioniert alles sowieichs will ich krich aber immer noch die fehlermeldung
kansnt du mir außerdem nochmal das mit dem fileexist erklären ?

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 Uhr.
Seite 2 von 5     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz