Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
peter_u

Anmeldungsdatum: 19.09.2006 Beiträge: 17 Wohnort: Remscheid, NRW
|
Verfasst am: 19.12.2007, 15:01 Titel: Sequenzielle Datei - Zugriffsfehler? |
|
|
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 |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 19.12.2007, 15:10 Titel: |
|
|
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 |
|
 |
peter_u

Anmeldungsdatum: 19.09.2006 Beiträge: 17 Wohnort: Remscheid, NRW
|
Verfasst am: 19.12.2007, 15:39 Titel: Sache ist erledigt |
|
|
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.
Trotzdem nochmals ein Danke. Gruss Peter _________________ Der alte Mann lernt noch
--- Learning by doing --- |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 19.12.2007, 15:47 Titel: |
|
|
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 |
|
 |
Bimi
Anmeldungsdatum: 03.12.2007 Beiträge: 66
|
Verfasst am: 19.12.2007, 16:37 Titel: Re: Sache ist erledigt |
|
|
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  _________________ Rechtbehelf:
Rechschreibverfehlungen, Vergehen an der Deutschen Sprache sowie Stabwechselverbuchselungen unterliegen dem Urheberrecht, sind voll beabsichtigt und fördern das aufmerksame Lesen. |
|
Nach oben |
|
 |
|