Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Sequenzielle Datei - Zugriffsfehler?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
peter_u



Anmeldungsdatum: 19.09.2006
Beiträge: 17
Wohnort: Remscheid, NRW

BeitragVerfasst am: 19.12.2007, 15:01    Titel: Sequenzielle Datei - Zugriffsfehler? Antworten mit Zitat

Hallo FB-Gemeinde.

Vielleicht kann jemand bei (m)einem Problem helfen. Ich habe versucht eine Lösung im Forum, mit der neuesten FB-Referenz oder auf QB-Seiten zu finden, leider ohne Ergebnis und bitte daher hier um Hilfe.

Schritt 1:
Ich starte mein Programm und lege 2 Datensätze an - speichere diese als Datensatz 1 und 2 in eine seq-Datei und beende das Programm.
Schritt 2:
Nun starte ich das Programm erneut, lege wieder 2 neue Datensätze an und speichere diese wieder als Datensatz 1 und 2 in die seq-Datei und beende das Programm.

Nach jedem Neustart des Programm werden nun beim ersten Einlesen
die alten (!) zwei Datensätze angezeigt (selbst wenn ich nach Schritt 1 die Datendatei von Festplatte lösche!). Erst wenn ich - ohne das Programm zu beenden - zum zweiten Mal diese Datensätze einlese erscheinen die Richtigen.

Wo ist der Fehler? Wäre nett, wenn jemand einen Tipp hätte.
Ach - und allen ein frohes Weihnachtsfest.

System: WinXPPro, neueste FB + FBEdit Version, als Win-GUI.

Auszug relevanter Daten
----------------------------
#Include Once "windows.bi"
#Include Once "win/commdlg.bi"
#Include Once "vbcompat.bi"
#Include Once "win/mmsystem.bi"

Screenres 1024,768,24
Windowtitle "TESTPRG - REMSCHEID"
Width 128, 48

Type DatenAnfrage
KuNr As UInteger ' Kunden Nr.
AnNr As UInteger ' Anfrage Nr.
AnDa As String * 10 ' Anfrage Datum tt.mm.jjjj
...usw
End Type
Dim Shared AN As Datenanfrage

Dim Shared As UInteger ANMax, ANAkt
'ANMax = Anzahl Datensätze - ANAkt = Aktueller Datensatz

'Daten speichern
Open "C:\Anker2008\ANFRAGEN.DAT" For Random As #4 Len = Len (AN)
For ANAkt=1 To ANMax '= 1 to 2 (2 Datensätze)
'Dateneingabe in Subs
Put #4, ANAkt, AN
Next ANAkt

'Daten laden
Open "C:\Anker2008\ANFRAGEN.DAT" For Random As #4 Len = Len (AN)
For ANAkt=1 To ANMax
Get #4,ANAkt ,AN
'Datenanzeige in Subs
Next ANAkt
_________________
Der alte Mann lernt noch
--- Learning by doing ---
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 19.12.2007, 15:10    Titel: Antworten mit Zitat

Bitte nutzen die "[ code] [ /code]" Tags um quelltext zu posten.

PS: Du gibst ans "Len" bei Open "Len(#4)" an .. das kann nicht passen, da du die änge als gesammtlänge des Records angibst ... wenn du 2 datenstätze abspeicherst, erhälst du folglich bei wieder öffnen die gesmmtlänge als ein datensatz ... die datensatzlänge must du schon gleich halten, bzw . fix ...

http://www.freebasic-portal.de/index.php?s=reftopic&id=233


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
peter_u



Anmeldungsdatum: 19.09.2006
Beiträge: 17
Wohnort: Remscheid, NRW

BeitragVerfasst am: 19.12.2007, 15:39    Titel: Sache ist erledigt Antworten mit Zitat

Hallo TPM.
Danke für den Hinweis mit den Tags.

Das Thema ist erledigt. Oh Gott - wie peinlich: Ich habe jetzt 3 Tage nach einer Lösung gesucht. Der Fehler: Ich hatte bei einer anderen Datei den gleichen Kanal #4 benutzt.

Übrigens: die Len-Angabe stimmt - denn sie wird durch die Angaben im Befehl Type und der dortigen Definition (As UInteger, AS String * 10, etc.), sowie dem anschliessendem "Dim (Shared) AN As Datenanfrage" festgelegt.

Mag falsch oder nicht vorgesehen sein, aber funktioniert einwandfrei.

happy
Trotzdem nochmals ein Danke. Gruss Peter
_________________
Der alte Mann lernt noch
--- Learning by doing ---
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 19.12.2007, 15:47    Titel: Antworten mit Zitat

kein Problem

Um solche zugrifsfehler bei der nutzung von #x nummern zu verhindern kannst du einfach vor jedem öffnen einer Datei eine FreeFile nummer anfordern. Dann hast du solche probleme nicht, bzw nicht so schnell.

Code:
Dim FileNummer as integer
FileNummer = FreeFile
Open "blub" for binary as #FileNummer
...
close #filenummer



MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Bimi



Anmeldungsdatum: 03.12.2007
Beiträge: 66

BeitragVerfasst am: 19.12.2007, 16:37    Titel: Re: Sache ist erledigt Antworten mit Zitat

peter_u hat Folgendes geschrieben:
Hallo TPM.

Das Thema ist erledigt. Oh Gott - wie peinlich: Ich habe jetzt 3 Tage nach einer Lösung gesucht. Der Fehler: Ich hatte bei einer anderen Datei den gleichen Kanal #4 benutzt.
Trotzdem nochmals ein Danke. Gruss Peter


Nö, das war nicht der Fehler, du hast ihn nur damit umschifft.


Tipp:
Mach deine Dateien nicht nur auf, sondern auch wieder zu. Nach dem schließen kannst du bequem den gelichen Datenkanal verwenden zwinkern
_________________
Rechtbehelf:

Rechschreibverfehlungen, Vergehen an der Deutschen Sprache sowie Stabwechselverbuchselungen unterliegen dem Urheberrecht, sind voll beabsichtigt und fördern das aufmerksame Lesen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz