Autor Beitrag
klausiemausie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98

Win XP, Win Vista Ultimate
Delphi 6
BeitragVerfasst: So 01.03.09 00:01 
jo dein beispiel hab ich an sich verstanden, nur mit dem savetodialog komm ich nich klar, so wie das oben als beispiel stand, hat es nicht gefunzt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 01.03.09 00:10 
Naja, du musst Execute aufrufen, wenn das erfolgreich war, dann musst du speichern. Wohin steht dann in FileName. Wie das dann genau aussieht, kommt dann auf deinen Code an.
Dass da eine Methode "Speichern" stand, war ja nur ein Beispiel dafür, dass du an der Stelle etwas mit dem erhaltenen Dateinamen machen musst.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 01.03.09 00:22 
So isses. Ohne die Daten zu kennen hätte ich ja nicht Konkretes dahin schreiben können. Also muss man nur eine Methode "Speichern" schreiben, die den Dateinamen übernimmt und alles ist in Butter.
klausiemausie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98

Win XP, Win Vista Ultimate
Delphi 6
BeitragVerfasst: So 01.03.09 10:40 
ihr sprecht in rätseln...
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 01.03.09 11:30 
Wieso? Du wolltest wissen, wie Du per Dialog einen Dateinamen auswählen kannst, um in diese Datei zu speichern. Das hab ich Dir in der ersten Antwort verraten. Da ich aber Deine Daten nicht kannte, habe ich die auszuführende Speichermethode halt "Speichern" genannt. Diese musst Du nur noch schreiben, dann kannst Du den Code aus meiner Antwort 1:1 übernehmen.
klausiemausie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98

Win XP, Win Vista Ultimate
Delphi 6
BeitragVerfasst: So 01.03.09 12:11 
hm und für die prozedur speichern, kann ich da den code von jaenicke nehmen?
klausiemausie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98

Win XP, Win Vista Ultimate
Delphi 6
BeitragVerfasst: So 01.03.09 12:23 
was mir noch eingefallen ist, ich könnte ja einfach den namen der zu speichernden datei in ne stringvariable einlesen, kann ich die variabable in den code mit einfügen, dass er in ne variable datei schreibt? also hier in dieser zeile
TestFile := TFileStream.Create(ExtractFilePath(ParamStr(0)) + 'test.txt', fmOpenRead);
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 01.03.09 12:39 
Natürlich, sonst macht der Dialog ja keinen Sinn.
ausblenden Delphi-Quelltext
1:
2:
TestFile := TFileStream.Create(OpenDialog.Filename, fmOpenRead); //zum Lesen
TestFile := TFileStream.Create(SaveDialog.Filename, fmOpenWrite); //zum Schreiben
klausiemausie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98

Win XP, Win Vista Ultimate
Delphi 6
BeitragVerfasst: So 01.03.09 13:32 
gut hab ich so geändert, kommt aber jetz ne fehlermeldung "Cannot open file", wenn ich auf den button zum speichern klicke
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 01.03.09 13:34 
Zeig mal den Code zum Speichern.
klausiemausie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98

Win XP, Win Vista Ultimate
Delphi 6
BeitragVerfasst: So 01.03.09 13:38 
procedure TForm1.Button8Click(Sender: TObject);
var

TestFile: TFileStream;
TestMemStream: TMemoryStream;
i: Integer;
begin
for i := Low(Region) to High(Region) do
begin
Region[i] := Region[i];
Zugehoerigkeit[i] := Zugehoerigkeit[i];
end;

TestFile := TFileStream.Create(SaveDialog1.Filename, fmOpenWrite);
try
TestMemStream := TMemoryStream.Create;
try
// Die Größe des MemoryStreams setzen
TestMemStream.SetSize(Length(Region) * SizeOf(Single));
// Den Speicherbereich des Arrays in den des Streams kopieren
CopyMemory(TestMemStream.Memory, @Region[Low(Region)], Length(Region) * SizeOf(Single));
// Die Position zum Lesen auf den Anfang setzen
TestMemStream.Position := 0;
// Und von dort aus den Inhalt in die Datei kopieren
TestFile.CopyFrom(TestMemStream, TestMemStream.Size);

TestMemStream.SetSize(Length(Zugehoerigkeit) * SizeOf(Byte));
CopyMemory(TestMemStream.Memory, @Zugehoerigkeit[Low(Region)], Length(Zugehoerigkeit) * SizeOf(Byte));
TestMemStream.Position := 0;
TestFile.CopyFrom(TestMemStream, TestMemStream.Size);
finally
TestMemStream.Free;
end;
finally
TestFile.Free;
end;
end;
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 01.03.09 13:41 
Zitat:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
for i := Low(Region) to High(Region) do
begin
Region[i] := Region[i];
Zugehoerigkeit[i] := Zugehoerigkeit[i];
end;

Ähmm... wozu soll das gut sein? Und Du führst den Dialog ja gar nicht aus.
klausiemausie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98

Win XP, Win Vista Ultimate
Delphi 6
BeitragVerfasst: So 01.03.09 13:47 
öhm gute frage, das stand im beispiel von jaenicke mit region[i]:=i, da das ja nich erwünscht war hab ich das geändert, is eig sinnlos ja^^. wie muss ich den code den ändern, dass er ausgeführt wird?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 01.03.09 13:49 
Das stand doch bereits in meiner ersten Antwort.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if SaveDialog1.Execute then
  begin
    TestFile := TFileStream.Create(SaveDialog1.Filename, fmOpenWrite); 
    // usw.
  end;
klausiemausie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98

Win XP, Win Vista Ultimate
Delphi 6
BeitragVerfasst: So 01.03.09 14:39 
gut das funktioniert, und wie erzähl ich dem savedialog nun, dass er das als ne text datei speichert? weil es kommt jetz die selbe fehlermeldung, allerdings erst wenn ich einen dateinamen eingebe und auf speichern klicke
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: So 01.03.09 14:42 
zeig nochmal deinen aktuellen code und setz den bitte in Delphitags, liest sich besser

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
klausiemausie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98

Win XP, Win Vista Ultimate
Delphi 6
BeitragVerfasst: So 01.03.09 14:44 
ausblenden volle Höhe Delphi-Quelltext
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:
procedure TForm1.Button8Click(Sender: TObject);
var

  TestFile: TFileStream;
  TestMemStream: TMemoryStream;
  i: Integer;
begin
  for i := Low(Region) to High(Region) do
  begin
    Region[i] := Region[i];
    Zugehoerigkeit[i] := Zugehoerigkeit[i];
  end;
if SaveDialog1.Execute then
begin
  TestFile := TFileStream.Create(SaveDialog1.Filename, fmOpenWrite);
  try
    TestMemStream := TMemoryStream.Create;
    try
      // Die Größe des MemoryStreams setzen
      TestMemStream.SetSize(Length(Region) * SizeOf(Single));
      // Den Speicherbereich des Arrays in den des Streams kopieren
      CopyMemory(TestMemStream.Memory, @Region[Low(Region)], Length(Region) * SizeOf(Single));
      // Die Position zum Lesen auf den Anfang setzen
      TestMemStream.Position := 0;
      // Und von dort aus den Inhalt in die Datei kopieren
      TestFile.CopyFrom(TestMemStream, TestMemStream.Size);

      TestMemStream.SetSize(Length(Zugehoerigkeit) * SizeOf(Byte));
      CopyMemory(TestMemStream.Memory, @Zugehoerigkeit[Low(Region)], Length(Zugehoerigkeit) * SizeOf(Byte));
      TestMemStream.Position := 0;
      TestFile.CopyFrom(TestMemStream, TestMemStream.Size);
    finally
      TestMemStream.Free;
    end;
  finally
    TestFile.Free;
  end;

  end;
end;
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: So 01.03.09 14:55 
warum hast Du
Zitat:

for i := Low(Region) to High(Region) do begin Region[i] := Region[i]; Zugehoerigkeit[i] := Zugehoerigkeit[i]; end;
noch drin?

Zitat:

TestFile := TFileStream.Create(SaveDialog1.Filename, fmOpenWrite);


aus der oh:
Zitat:

fmOpenWrite : Die Datei wird ausschließlich zum Schreiben geöffnet. Beim Schreiben in die Datei wird der aktuelle Inhalt vollständig ersetzt.
fmCreate :Es wird eine Datei mit dem angegebenen Namen angelegt. Ist eine Datei mit diesem Namen bereits vorhanden, wird die Datei geleert und zum Schreiben geöffnet.

was meinst Du, was Du verwneden mußt, wenn die Datei noch nicht exisitiert? fmopenwrite oder fmcreate? und warum wirst Du mit openwrite Deine Fehlermeldung erhalten ;-)?

Edit: Achso und als Text-datei wird der stream nicht gespeichert! du kannst das nicht mit einem editor öffnen und bearbeiten.

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
klausiemausie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98

Win XP, Win Vista Ultimate
Delphi 6
BeitragVerfasst: So 01.03.09 15:27 
schubba, jetz funzt es, danke an alle