AGB  ·  Datenschutz  ·  Impressum  







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

Scrollfunktion rückwärts über EOF

Ein Thema von Eddit · begonnen am 24. Feb 2012 · letzter Beitrag vom 27. Feb 2012
Antwort Antwort
Eddit

Registriert seit: 13. Feb 2012
6 Beiträge
 
Turbo Delphi für Win32
 
#1

Scrollfunktion rückwärts über EOF

  Alt 24. Feb 2012, 14:23
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:
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;
hat jemand eine ahnung woran das liegen könnte? danke im voraus!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: Scrollfunktion rückwärts über EOF

  Alt 24. Feb 2012, 14:42
EOF (hinteres Ende)
BOF ? (vorderes Ende)

Achso, also eigentlich Datei und nicht eine richtige datenbank.

Zitat:
filepos(VDVDFile)= 2
Der erste Datensatz müßte 0 sein.
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;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (24. Feb 2012 um 14:54 Uhr)
  Mit Zitat antworten Zitat
shmia

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

AW: Scrollfunktion rückwärts über EOF

  Alt 24. Feb 2012, 15:14
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.
Andreas
  Mit Zitat antworten Zitat
Eddit

Registriert seit: 13. Feb 2012
6 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Scrollfunktion rückwärts über EOF

  Alt 26. Feb 2012, 23:12
danke himitsu!! funktioniert perfekt^^
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#5

AW: Scrollfunktion rückwärts über EOF

  Alt 27. Feb 2012, 00:30
danke himitsu!! funktioniert perfekt^^
Aber shmia hat schon Recht.
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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:22 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