AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi typisierte Datei zum Speichern fehlerhaft
Thema durchsuchen
Ansicht
Themen-Optionen

typisierte Datei zum Speichern fehlerhaft

Ein Thema von Technikus · begonnen am 16. Aug 2005 · letzter Beitrag vom 22. Aug 2005
Antwort Antwort
Seite 2 von 3     12 3      
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#11

Re: typisierte Datei zum Speichern fehlerhaft

  Alt 16. Aug 2005, 09:38
Zitat von Technikus:
ich weiß mit den drei Punkten nichts anzufangen. Was kommt dort rein, was muss ich aus meinem Quellcode weglassen.
Statt write schreibst du fs.WriteBuffer.
Wenn du's anschaust... da wärst du bestimmt seblst drauf gekommen.
Delphi-Quellcode:
procedure TForm1.Button1_SpeichernClick(Sender: TObject);
var Messwert: TLeistung;
    i, anzahl: integer;
    fs : TFileStream;
begin
  anzahl:=StrToInt(Edit3_Eingabe_anzahl.Text);
  fs := TFileStream.Create('solarz.dat', fmCreate);
  try
  for i:= 1 to anzahl do
  with Messwert do
   begin
    nr:= i;
    Spannung:= StrToFloat(StringGrid1.Cells[1,i]);
    Strom:= StrToFloat (StringGrid1.Cells [2,i]);
    Leistung:=StrToFloat (StringGrid1.Cells [3,i]);
    end;
    fs.WriteBuffer(Messwert, Sizeof(Messwert));
  finally
     fs.Free;
  end;
end;
Andreas
  Mit Zitat antworten Zitat
Technikus

Registriert seit: 2. Aug 2005
46 Beiträge
 
#12

Re: typisierte Datei zum Speichern fehlerhaft

  Alt 16. Aug 2005, 09:52
Hallo shmia,

ich habe den Code geändert und in der Zeile
fs.WriteBuffer(Messwert, Sizeof(Messwert)); die Fehlermeldung: Es gibt keine überladene Version non 'WriteBuffer', die man mit diesen Argumenten aufrufen kann.
Gruß Technikus
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: typisierte Datei zum Speichern fehlerhaft

  Alt 16. Aug 2005, 10:01
fs.writesbuffer + F1 und lesen
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Technikus

Registriert seit: 2. Aug 2005
46 Beiträge
 
#14

Re: typisierte Datei zum Speichern fehlerhaft

  Alt 21. Aug 2005, 19:25
Hallo!
Danke nochmal an shmia
ich bin mit meinem Problem noch nicht einen cm weitergekommen.[Delphi 2005 Prof.]
Kann mir bitte jemand helfen? Das Compilieren hängt an der Stelle fs.writebuffer...
Delphi-Quellcode:
type TLeistung= record
 nr: byte;
 Spannung, Strom, Leistung: double;
 end;

procedure TForm1.Button1_SpeichernClick(Sender: TObject);
var Messwert: TLeistung;
    i, anzahl: integer;
    fs : TFileStream;
begin
  anzahl:=StrToInt(Edit3_Eingabe_anzahl.Text);
  fs := TFileStream.Create('solarz.dat', fmCreate);
  try
  for i:= 1 to anzahl do
  with Messwert do
   begin
    nr:= i;
    Spannung:= StrToFloat(StringGrid1.Cells[1,i]);
    Strom:= StrToFloat (StringGrid1.Cells [2,i]);
    Leistung:=StrToFloat (StringGrid1.Cells [3,i]);
    end;
    fs.WriteBuffer(Messwert,Sizeof(Messwert));
  finally
     fs.Free;
  end;
end;
In der Hilfe finde ich z.B. den Syntax
[Delphi] public procedure WriteBuffer(const Buffer: array of Byte, Count: Integer);
Damit kann ich aber nichts anfangen.
Vielleicht weiß jemand, was ich wie ändern muss.
Danke
Technikus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: typisierte Datei zum Speichern fehlerhaft

  Alt 21. Aug 2005, 20:30
Hallo Technikus,

ich finde deine binäre Ausgabe nicht gut - die Ausgabe im CSV-Format oder als XML-Datei fände ich dem Anwendungsfall angemessener - aber so sollte es funktionieren:

Delphi-Quellcode:
type
  TLeistung= record
    nr: byte;
    Spannung, Strom, Leistung: double;
  end;

procedure TForm1.Button1_SpeichernClick(Sender: TObject);
var
  Messwert: TLeistung;
  Buffer: array [1..SizeOf(TLeistung)] of byte absolute Messwert;
  ...
begin
  ...
    fs.WriteBuffer(Buffer, Sizeof(Buffer));
  ...
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#16

Re: typisierte Datei zum Speichern fehlerhaft

  Alt 21. Aug 2005, 20:49
Zitat von marabu:
ich finde deine binäre Ausgabe nicht gut - die Ausgabe im CSV-Format oder als XML-Datei fände ich dem Anwendungsfall angemessener - aber so sollte es funktionieren:
Jupp. XML wäre wohl das Ziel. (CSV halte ich für ziemlich haarig...)
Auf dem Weg dahin wäre vielleicht DFM ganz brauchbar.
Ohne das öffentliche Interface des alten Records zu ändern wäre das möglich:
Delphi-Quellcode:
interface
uses
   Classes,
   dpCollection;

type
   TLeistung = class(TCollectionItem)
   private
      fSpannung : double;
      fLeistung : double;
      fStrom : double;
      fNr : Byte;
   published
      property Nr : Byte read fNr write fNr;
      property Spannung : double read fSpannung write fSpannung;
      property Strom : double read fStrom write fStrom;
      property Leistung : double read fLeistung write fLeistung;
   end;

{$DEFINE TYPED_DP_COLLECTION_TEMPLATE}

   _COLLECTION_ITEM_ = TLeistung;
{$INCLUDE dpCollection_tmpl.pas}

   TLeistungCollection = class(_COLLECTION_)
   end;
implementation
{$INCLUDE dpCollection_tmpl.pas}

end.
Nun hast du eine laufende Lösung bis du XML unterstützen willst.
Vielleicht baut das einer der "neuen dpCollection-Fritzen" hier in der Zwischenzeit ein.
Delphi-Quellcode:
var
  Leistung : TLeistung;
  Leistungen : TLeistungCollection;
begin
  Leistungen := TLeistungCollection.Create();
  try
    for i := 1 to 10 do
    begin
      Leistung := Leistungen.Add();
      Leistung.Nr := i;
      Leistung.Spannung := ...;
    end;

    Leistungen.SaveToFile('Miep.dfm');
  finally
    Leistungen.Free();
  end;
Nicht gerade elegant, allemale netter als all das record-Gefriemel.

btw: Die dpCollection gibt's hier: dpCollectiondpCollection
  Mit Zitat antworten Zitat
Technikus

Registriert seit: 2. Aug 2005
46 Beiträge
 
#17

Re: typisierte Datei zum Speichern fehlerhaft

  Alt 22. Aug 2005, 16:01
Hallo!
Komme gerade erst von Arbeit, deshalb meine Verspätung.
Danke erst mal für die Antworten .
marabu-->
ich habe den Quelltext so geändert, aber jetzt gibt es eine neue Fehlermeldung:siehe Zeile 8.
Kann mir jemand bei der Fehlersuche helfen?


Delphi-Quellcode:
type TLeistung= record
 nr: byte;
 Spannung, Strom, Leistung: double;
 end;

procedure TForm1.Button1_SpeichernClick(Sender: TObject);
var Messwert: TLeistung;
    Buffer: array [1..SizeOf(TLeistung)] of byte absolute Messwert;
{E2026 Konstantenausdruck erwartet}
    i, anzahl: integer;
    fs : TFileStream;
begin
  anzahl:=StrToInt(Edit3_Eingabe_anzahl.Text);
  fs := TFileStream.Create('solarz.dat', fmCreate);
  try
  for i:= 1 to anzahl do
  with Messwert do
   begin
    nr:= i;
    Spannung:= StrToFloat(StringGrid1.Cells[1,i]);
    Strom:= StrToFloat (StringGrid1.Cells [2,i]);
    Leistung:=StrToFloat (StringGrid1.Cells [3,i]);
    end;
    fs.WriteBuffer(Buffer,Sizeof(Buffer));
  finally
     fs.Free;
  end;
end;
Gruß
Technikus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#18

Re: typisierte Datei zum Speichern fehlerhaft

  Alt 22. Aug 2005, 16:45
Hallo Technikus,

dein Compiler mag die Art nicht, in der ich die Obergrenze des array angegeben habe. Entweder du findest den Compilerschalter, der den Code so akzeptiert, wie ich ihn dir gegeben habe, oder du änderst den Code nochmal ab:

Delphi-Quellcode:
procedure TForm1.Button1_SpeichernClick(Sender: TObject);
var
  Messwert: TLeistung;
  Buffer: array [1..32] of byte absolute Messwert;
  ...
begin
  ...
  fs.WriteBuffer(Buffer, Sizeof(Messwert));
  ...
Grüße vom marabu
  Mit Zitat antworten Zitat
Technikus

Registriert seit: 2. Aug 2005
46 Beiträge
 
#19

Re: typisierte Datei zum Speichern fehlerhaft

  Alt 22. Aug 2005, 17:04
Hallo marabu,
jetzt meldet er, dass er nicht mit dem "absolute" zurechkommt.

Delphi-Quellcode:
type TLeistung= record
 nr: byte;
 Spannung, Strom, Leistung: double;
 end;

procedure TForm1.Button1_SpeichernClick(Sender: TObject);
var Messwert: TLeistung;
    Buffer: array [1..32] of byte absolute Messwert;
{E1030 Ungültige Compileranweisung: 'absolute'}
    i, anzahl: integer;
    fs : TFileStream;
begin
  anzahl:=StrToInt(Edit3_Eingabe_anzahl.Text);
  fs := TFileStream.Create('solarz.dat', fmCreate);
  try
  for i:= 1 to anzahl do
  with Messwert do
   begin
    nr:= i;
    Spannung:= StrToFloat(StringGrid1.Cells[1,i]);
    Strom:= StrToFloat (StringGrid1.Cells [2,i]);
    Leistung:=StrToFloat (StringGrid1.Cells [3,i]);
    end;
    fs.WriteBuffer(Buffer,Sizeof(Buffer));
  finally
     fs.Free;
  end;
end;
Gruß Technikus
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#20

Re: typisierte Datei zum Speichern fehlerhaft

  Alt 22. Aug 2005, 17:11
Welche Delphiversion hast du? Keine Probleme mit D6 und D2005.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:42 Uhr.
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