Autor |
Beitrag |
NeMeZ
      
Beiträge: 25
Win7
Delphi10
|
Verfasst: Mo 25.04.11 09:21
Einloggen, um Attachments anzusehen!
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Mo 25.04.11 10:10
Mach mal statt SaveToFile ein Showmesssage....
Delphi-Quelltext 1:
| SaveToFile(save.InitialDir) |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
turboPASCAL
      
Beiträge: 193
Erhaltene Danke: 1
Win XP / Vischda
D6 PE / D2005 PE
|
Verfasst: Mo 25.04.11 11:04
_________________ Nein, ich bin nicht der turboPASCAL aus der DP, ich seh nur so aus...
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Mo 25.04.11 11:34
@turboPASCAL
Spielverderber 
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
NeMeZ 
      
Beiträge: 25
Win7
Delphi10
|
Verfasst: Mo 25.04.11 11:43
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Mo 25.04.11 12:05
sicher nicht, lies doch mal die Fehlermeldung genau...
Etwas in der Art D:\Dateiname.endung wäre hilfreich....
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 25.04.11 13:06
NeMeZ hat folgendes geschrieben : | Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| if save.Execute then begin Save.InitialDir :=ExtractFilePath(edit1.Text); Seek(0, soFromBeginning); SaveToFile(save.InitialDir); end; | |
Fassen wir mal zusammen:
Du zeigst zuerst den Dialog an. Der Benutzer wählt einen Dateinamen aus, in dem gespeichert werden soll.
Dann nachdem der Dialog bereits angezeigt war setzt du die Eigenschaft, welcher Pfad zuerst bei der Anzeige des Dialogs ausgewählt sein soll auf den Pfad in Edit1.Text.
Und am Ende speicherst du in diesen von dir selbst gerade zugewiesenen Pfad.  Wofür eigentlich der Dialog, wenn der vom Benutzer ausgewählte Dateiname ohnehin verworfen wird?!?
Was du machst geht viel einfacher zu schreiben: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button1Click(Sender: TObject); begin with TResourceStream.Create(hInstance, 'exe1', RT_RCDATA) do try Seek(0, soFromBeginning); SaveToFile(ExtractFilePath(edit1.Text)); finally Free; end; end; | Und dass es nicht klappt, wenn du an SaveToFile den Pfad aus dem Dateinamen in Edit1.Text übergibst, ist wohl irgendwie logisch, oder?
Was willst du jetzt wirklich machen? Einen Dateinamen über den Dialog vom Benutzer erfragen und dort speichern? Dann solltest du auch die Eigenschaft FileName des Dialogs benutzen um dort zu speichern...
|
|
NeMeZ 
      
Beiträge: 25
Win7
Delphi10
|
Verfasst: Mo 25.04.11 17:17
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 25.04.11 17:35
Das ändert aber nichts daran, dass du keinen Dateinamen angibst und der SaveDialog zwar angezeigt, die Auswahl des Benutzers aber ignoriert wird.
Was willst du denn nun machen mit dem Dialog?
|
|
NeMeZ 
      
Beiträge: 25
Win7
Delphi10
|
Verfasst: Di 26.04.11 15:58
also, jetzt kann ich ein folder erstellen, aber die Resources wollen nicht darein.... so eine kake.... und savedialog(damit ich den ordner auswählen kann...) kann ich auch nicht reinprogrammieren kommt gleich eine fehlermeldung "zugriffverletzung"
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Forms, Dialogs, StdCtrls, ShlObj, Controls;
type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Button2: TButton; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1; edit1:Tedit; Dir: string; implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin with TResourceStream.Create(hInstance, 'exe1', RT_RCDATA) do try Dir := edit1.Text; ForceDirectories(Dir); Seek(0, soFromBeginning); SaveToFile(dir); finally Free; end;
end;
end. |
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 26.04.11 16:01
NeMeZ hat folgendes geschrieben : | also, jetzt kann ich ein folder erstellen, aber die Resources wollen nicht darein.... so eine kake.... und savedialog(damit ich den ordner auswählen kann...) kann ich auch nicht reinprogrammieren kommt gleich eine fehlermeldung "zugriffverletzung" |
Der SaveDialog ist auch zur Auswahl einer Ziel datei, keines Ordners...
Dafür gibt es SelectDirectory.
NeMeZ hat folgendes geschrieben : | Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| with TResourceStream.Create(hInstance, 'exe1', RT_RCDATA) do try Dir := edit1.Text; ForceDirectories(Dir); Seek(0, soFromBeginning); SaveToFile(dir); finally Free; end; | |
Ist dir echt nicht klar, dass es einen Unterschied zwischen Dateien und Ordnern gibt?
Was willst du damit bewirken, wenn du als Dateiname zum Speichern den Namen eines Ordners angibst?
// EDIT:
NeMeZ hat folgendes geschrieben : | Delphi-Quelltext 1: 2: 3: 4: 5:
| var Form1: TForm1; edit1:Tedit; Dir: string; implementation | |
Nicht nur, dass du Dir global deklarierst, warum auch immer...
Nein, du deklarierst auch noch eine Variable Edit1 zusätzlich.  Warum?
|
|
NeMeZ 
      
Beiträge: 25
Win7
Delphi10
|
Verfasst: Di 26.04.11 18:59
Zitat: | Nein, du deklarierst auch noch eine Variable Edit1 zusätzlich. Warum? |
in einer procedur wurde edit1 nicht anerkannt, wieso weiss ich nicht...
also, ich habe das heir geschrieben:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| var dir : string; begin if SelectDirectory ('Select folder', '', dir, [sdNewFolder, sdNewUI]) then edit1.Text:= dir; end; |
aber die daten aus der EXE kann ich immer noch nicht speichern.... da, wo ich das will....
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 26.04.11 19:04
|
|
HenryHux
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: Di 26.04.11 19:09
NeMeZ hat folgendes geschrieben : | Zitat: | Nein, du deklarierst auch noch eine Variable Edit1 zusätzlich. Warum? |
in einer procedur wurde edit1 nicht anerkannt, wieso weiss ich nicht...  |
Das passiert wenn du die Procedure nicht in der Klasse deiner Form deklarierst, so weiß dein Compiler nicht was edit1 ist.
Wenn du jetzt einfach ein neues TEdit deklarierst und es weder erstellst noch ihm einen Parent gibst, klappt es sowieso schonmal nicht.
Versuchs mal mit DeineForm.edit1, Dann wird es klappen.
Und wieso nimmst du nicht den Weg, den du oben schon angesprochen hast?
Ein paar Änderungen und es sollte klappen.
Mal ein Beispiel, an dem du den Unterschied zwischen Pfad und Pfad + Datei siehst.
Angenommen du hast ein Bild auf C:\, das TestBild heißt.
Wenn du jetzt in deinen Browser C:\ eingibst, dann öffnet er die die Partition, das Bild wird dir aber nicht angezeigt.
Wenn du jetzt soetwas wie C:\TestBild.bmp eingibst, passiert was anderes.
Kannst es ja mal ausprobieren.
lg
|
|
|