![]() |
Scrollfunktion rückwärts über EOF
hallo leute,
ich habe ein problem. und zwar habe ich mit TUpDown eine scrollfunktion eingerichtet, um mich durch die daten einer datenbank zu blättern. vorwärts geht es ohne probleme und sogar über EOF hinaus also er beginnt dann am anfang der datenbank. nur hab ich probleme mit dem rückwärtsscrollen. ich habe hier mal den quellcode wie es zurzeit in der prozedur aussieht:
Delphi-Quellcode:
hat jemand eine ahnung woran das liegen könnte? danke im voraus!!
procedure TFormDVD.UpDown1Click(Sender: TObject; Button: TUDBtnType);
var p : byte; begin case Button of btNext: begin if EOF(VDVDFile) then seek(VDVDFile,0); read(VDVDFile,HV); with VDVD do begin //Ausgabe end; end; btPrev: begin p:=filepos(VDVDFile); if filepos(VDVDFile)= 2 then begin seek(VDVDFile,filesize(VDVDFile)); p:=filepos(VDVDFile); read(VDVDFile,HV); with VDVD do begin //Ausgabe end; end else begin p:=filepos(VDVDFile); seek(VDVDFile,filepos(VDVDFile)-1); read(VDVDFile,HV); with VDVD do begin //Ausgabe end; end; end; |
AW: Scrollfunktion rückwärts über EOF
EOF (hinteres Ende)
BOF ? (vorderes Ende) Achso, also eigentlich Datei und nicht eine richtige datenbank. :oops: Zitat:
Und der Letzte ist Anzahl-1. Und FilePos steht auf dem Datensatz nach dem zuletzt Gelesenen ... also muß man immer 2 Schritte zurück. (den zuletzt gelesenen und den jetzt zu lesenden Datensatz) Gibt FileSize und FilePos eigentlich die Dateigröße, oder die Anzahl der Records (Datensätze) an? [add] Unter der Annahme FilePos/FileSize liefern die Anzahl/Position der Datensätze und nicht die Größe/Position in Byte. Ansonsten mußt'e das erst umrechnen.
Delphi-Quellcode:
procedure TFormDVD.UpDown1Click(Sender: TObject; Button: TUDBtnType);
var p : Integer; begin case Button of btNext: begin if EOF(VDVDFile) then seek(VDVDFile, 0); end; btPrev: begin p := FilePos(VDVDFile); if p <= 1 then seek(VDVDFile, FileSize(VDVDFile) - 1) else seek(VDVDFile, p - 2); end; read(VDVDFile, HV); // Thema doppelter Code ... ist ja überall gleich with VDVD do begin //Ausgabe end; end; |
AW: Scrollfunktion rückwärts über EOF
Da fehlt ganz eindeutig eine Softwareschicht in dem Code.
Man greift nicht einfach so aus einem Formular auf Dateifunktionen wie Seek, read, write,usw. zu. Ohne diese Zwischenschicht bekommt man redundanten, fehlerträchtigen und schlecht wartbaren Code. Ich könnte dazu mehr schreiben; mach ich aber nur, wenn meine Argumente von oben auf Zustimmung stossen. |
AW: Scrollfunktion rückwärts über EOF
danke himitsu!! funktioniert perfekt^^
|
AW: Scrollfunktion rückwärts über EOF
Zitat:
In einer kleinen Klasse, mit mindestens den 4 Funktionen Open, Close, Next und Prev, sowie einem Property mit den/dem aktuellen Werten/Datensatz, macht es sich bestimmt noch besser. (vorallem wiederverwendbarer) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:22 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