![]() |
StreamDatei öffnen ohne OpenDialog.Execute
Hallo,
ich habe eine StreamDatei gespeichert unter einem Namen, der in einem Edit-Feld eingetragen wurde: pfad := Edit1.Text + '.dat'; Stream := TFileStream.Create(pfad, fmCreate); Ich umgehe so den SaveDialog.Execute. Wenn ich aber aus einer FileListBox den Datensatz auswähle und zurück zu dem Edit-Feld schicke, was muss ich machen, das die dazugehörigen Daten geöffnet werden, ohne OpenDialog.Execute Abfrage? Der umgekehrte Weg funktioniert nicht so wie die Speicherung :-( Hat jemand eine Idee, was ich machen muss? Viele Grüsse Dirk |
Re: StreamDatei öffnen ohne OpenDialog.Execute
Warum sollte der umgekehrte Weg nicht gehen? Wenn der Pfad und Dateiname stimmt, sehe ich da kein Problem.
"Nicht gehen" ist übrigens eine sehr hilfreiche Fehlerbeschreibung. |
Re: StreamDatei öffnen ohne OpenDialog.Execute
Hallo Michael,
warum es umgekehrt nicht funktioniert, weiss ich nicht: meine Procedure wäre (jetzt aus dem Kopf):
Delphi-Quellcode:
Vielleicht siehst Du ja jetzt den Fehler!
dsmax: Maximale Anzahl Datensätze
dsOpen: Datensätze öffnen (Edit1.Text := Feld) pfad := Edit1.Text Stream := TFileStream.Create(pfad, fmOpenRead); Stream.ReadBuffer(dsmax, SizeOf(Word)); for i := dsmax - 1 downto 0 do Stream.ReadBuffer(Daten[i], SizeOf(TDaten); dsOpen; Stream.Free; Bekommst auch im MT ein Bier von mir!!! Dirk [edit=Luckie]Delphi-Tags eingefügt. Beim nächsten mal bitte selber machen. Mfg, Luckie[/edit] |
Re: StreamDatei öffnen ohne OpenDialog.Execute
Du musst eine Struktur angeben als Buffer für ReadBuffer und nicht die Anzahl, die du lesen willst. Und als Größe eben die Größe der Struktur. Dann gehst du die Datei so lange durch und rufst in der Schleife ReadBuffer auf, bist du am Ende der Datei bist.
|
Re: StreamDatei öffnen ohne OpenDialog.Execute
Und wie schreibe ich diese Struktur?
Ich stehe ein wenig auf dem Schlauch! Dirk |
Re: StreamDatei öffnen ohne OpenDialog.Execute
Du musst doch wissen, wie deine Daten aussehen die du lesen willst. Wie schreibst du denn rein?
|
Re: StreamDatei öffnen ohne OpenDialog.Execute
Delphi-Quellcode:
Dirk
procedure TForm1.save1();
var i: integer; pfad: string; begin pfad := Edit1.Text + '.dat'; Stream := TFileStream.Create(pfad, fmCreate); dsSave; Stream.WriteBuffer(dsmax, SizeOf(Word)); for i := dsmax - 1 downto 0 do Stream.WriteBuffer(Daten, SizeOf(TDaten)); Stream.Free, end; |
Re: StreamDatei öffnen ohne OpenDialog.Execute
Und wie sieht Daten aus? Und was steht nachher bei dir in Daten drinne? Und wie äußert sich das "nicht funktionieren"?
Gibt doch einfach mal alle Informationen, die relevant sind. :roll: |
Re: StreamDatei öffnen ohne OpenDialog.Execute
VIelleicht solltest du einfach mal sagen, was denn das Problem ist? Kommt ne Fehlermeldung oder sonstwas? :wall:
|
Re: StreamDatei öffnen ohne OpenDialog.Execute
Der Rest vom Code der wichtig sein könnte
Delphi-Quellcode:
Implementierung
Type TDaten = record; Feld1, Feld1: String[20]; end; var Stream: TFileStream; Daten: array of TDaten; Index: Byte = 0; dsmax: Word = 1; procedure dsSave begin with Daten[Index] do begin Feld1 := Edit1.Text; // bei dsOpen ist es umgekehrt Feld2 := Edit2.TExt; end; end; procedure TForm begin SetLength(Daten, dsmax); end; Wenn ich die Datei in der FileListBox anklicke, wird der DateiName an Edit1 geschickt, der Rest der Felder bleibt leer und es geht nur noch mit Anfang und Fehlermeldung[OK] weiter. Die Fehlermeldung habe ich jetzt leider nicht zur Verfügung. Dirk |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:51 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