AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

erster Datensatz aus record lesen

Ein Thema von TheMiller · begonnen am 20. Mär 2005 · letzter Beitrag vom 21. Mär 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

erster Datensatz aus record lesen

  Alt 20. Mär 2005, 22:13
Hi,

eine gaanz dumme Frage: Wie kann ich den ersten Datensatz eines Records auslesen?

Es ist folgendermaßen aufgebaut:

Delphi-Quellcode:
  type TRechnung = record
   RDatum:String[20];
   Name1,Name2,Name3,Str,Ort:String[200];
  end;
Ich habe immer mit seek geuscht. Und zwar so:

Delphi-Quellcode:
seek(rdatei, filesize(rdatei));
seek(rdatei, filesize(rdatei)-1);
seek(rdatei, 0);
seek(rdatei, 1);
Doch immer kommt eine Fehlermeldung. Meistens "Versuch hinter dem Dateiende zu lesen". Ist ja auch klar. Doch wie mache ich das richtig? Habe ich keine ID...
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: erster Datensatz aus record lesen

  Alt 20. Mär 2005, 22:20
Probiers mal so:
seek(rdatei, filesize(rdatei)-SizeOf(TRechnung)); und dann einfach einen datensatz lesen.

PS: Hat es einen Grund, dass für das Datum RDatum ein String verwendet wird und nicht TDate bzw. TDateTime? (Ich gehe mal davon aus, dass in RDatum sowas wie 21.03.2005 (und evtl. noch die Uhrzeit) gespeichert werden soll)

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3

Re: erster Datensatz aus record lesen

  Alt 20. Mär 2005, 22:26
HI,

ja es hat einen Grund. Ich war zu faul eine TDateTime-Komponente auf die Form zu legen und beim Speichern immer DateToStr einzugeben...

ICh werde es mal testen.. mom...
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#4

Re: erster Datensatz aus record lesen

  Alt 20. Mär 2005, 22:26
E/A-Fehler 131. Prozess wurde angehalten sry..
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: erster Datensatz aus record lesen

  Alt 20. Mär 2005, 22:31
Ach nee, das wird wohl nichts, es sollte so heißen:
seek(rdatei, 0); (Und dann einen Datensatz lesen)
Der andere Code war für das Lesen des letzten Datensatzes, da hab ich wohl was verwechselt. Das kommt halt davon, wenn man spät abends noch vorm PC sitzt

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#6

Re: erster Datensatz aus record lesen

  Alt 20. Mär 2005, 22:32
Hm.

Hatte ich schonmal probiert. Stimmt aber auch nicht. ABer mal eine Frage der Logik... Wenn nur ein Datensatz vorhanden ist, ist dann nicht der erste auch der letzte und umgekehrt??
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: erster Datensatz aus record lesen

  Alt 20. Mär 2005, 22:38
Zitat von DJ-SPM:
Hm.

Hatte ich schonmal probiert. Stimmt aber auch nicht. ABer mal eine Frage der Logik... Wenn nur ein Datensatz vorhanden ist, ist dann nicht der erste auch der letzte und umgekehrt??
Ja klar, weil es ja sonst keine weitern Datensätze gibt. Man könnte höchstens Probleme bekommen, wenn die Datei leer ist.

Mal eine andere Frage: wie speicherst bzw. liest du eigentlich den Record in der Datei? Vielleicht liegt ja da der Fehler.
Ansonsten schau mal in der OH nach, was
Code:
E/A-Fehler 131
bedeutet.
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#8

Re: erster Datensatz aus record lesen

  Alt 20. Mär 2005, 22:44
Ich lese folgendermaßen aus:

Delphi-Quellcode:
  seek(rdatei, 0);
  read(rdatei, rdata);

  Label11.Caption:=rdata.Name1;
  Label12.Caption:=rdata.Name2;
  Label13.Caption:=rdata.Name3;
  Label14.Caption:=rdata.Str;
  Label15.Caption:=rdata.Ort;
Habe die Datei vorher natuürlich assigned...
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: erster Datensatz aus record lesen

  Alt 20. Mär 2005, 23:03
Verwende zum Lesen lieber ReadLn statt Read (Read war schon zu TP-Zeiten manchmal etwas problematisch):
Delphi-Quellcode:
var rdata: TRechnung;
    rdatei: text; //oder TextFile
...
AssignFile(rdatei, 'C:\daten.dat');
Reset(rdatei);//entspricht quasi Seek(rdatei, 0);
if Eof(rdatei) then rdata.RDatum:= ''
 else ReadLn(rdatei, rdata.RDatum);
if Eof(rdatei) then rdata.Name1:= ''
 else ReadLn(rdatei, rdata.Name1);
if Eof(rdatei) then rdata.Name2:= ''
 else ReadLn(rdatei, rdata.Name2);
if Eof(rdatei) then rdata.Name3:= ''
 else ReadLn(rdatei, rdata.Name3);
if Eof(rdatei) then rdata.Str:= ''
 else ReadLn(rdatei, rdata.Str);
if Eof(rdatei) then rdata.Ort:= ''
 else ReadLn(rdatei, rdata.Ort);
CloseFile(rdatei);
Das sollte so auch funktionieren, wenn die Datei leer ist.
Die Funktion Eof überprüft, ob das Dateiende der angegebenen Datei erreicht ist, und falls das der Fall ist, wird True zurückgegeben, sonst False.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#10

Re: erster Datensatz aus record lesen

  Alt 20. Mär 2005, 23:13
Naja,

diese Dateien, die ich in dieser Funktion auslese sind niemals leer und haben auch immer nur einen Datensatz...
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:05 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