Entwickler-Ecke
Dateizugriff - TFileStream verhält sich seltsam
dreamtheater - Di 02.09.03 15:13
Titel: TFileStream verhält sich seltsam
Ich benutze einen TFileStream und lese daraus bzw schreibe darin sequentiell Daten nur innerhalb kurzer try .. finally Blöcke.
Hin und wieder passiert es, wenn beim Starten des Prog (aus der Entwicklungsumgebung, anders hab ichs noch nicht probiert) Daten aus dem File gelesen werden, das Prog sehr lange zum Starten braucht. Wenn es dann startet, stellt sich heraus, daß keine Daten gelesen werden konnten (es handelt sich um Farbdaten bzw. die vordefinierten Farben aus einem Color-Dialog). Wenn ich dann ins File schaue sind zwar Daten da, aber an diese angehängt stehen zwei Pfade (die zum Delphi Verzeichnis zeigen), die ich aber garnicht in das file geschrieben habe!
Zusätzlich scheint die Festplatte ständig zu arbeiten, das System wird etwas langsam. Das gibt sich, wenn ich das File lösche.
Hat jemand eine Ahnung, was da sein könnte?
BungeeBug - Di 02.09.03 15:24
Hi,
könntest du evl. den entspechenden Code posten?
Stell doch erst mal sicher das das wirklich an dem Stream liegt und nicht an nem amoklaufenden Vierenscanner ...
dreamtheater - Di 02.09.03 16:21
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| procedure IniSchreiben; var Strom: TFileStream; i: Integer; sString:string;
procedure StringSchreiben(str: String); var iLen: LongInt; begin iLen:= Length(str); Strom.Write(iLen, SizeOf(LongInt)); Strom.Write(str[1], iLen); end;
begin try Strom:= TFileStream.Create(ChangeFileExt( Application.ExeName, '.cfg'), fmCreate) Strom.Write(Farbevon, SizeOf(TFarben)); for i:= 0 to 15 do begin sString:=Form1.ColorDialog1.CustomColors.Values['Color'+Chr(Ord('A')+i)]; StringSchreiben(sString); end; finally Strom.Free; end; end; |
Der code sah so aus - mittlerweile habe ich allerdings den Strom außerhalb des try..finally kreiert, was mir sinnvoller erschien... vielleicht ist es damit ja behoben, was ich nicht sagen kann, weils, wie gesagt, nur gelegntlich auftritt. Habe übrigens kein Virenprogramm, aber seit ich SP4 unter Win2k installert habe stürzt auch SCSIPORT.SYS gelegentlich beim booten mit bluescreen ab.
Moderiert von
UGrohne: Code- durch Delphi-Tags ersetzt
dreamtheater - Do 04.09.03 20:14
Das Problem besteht trotz geänderten Codes immer noch, es scheint besonders beim ersten Compile nach dem Starten von D7 aufzutreten (regelmäßigkeit konnte ich aber noch keine entdecken). Außerdem habe ich mich offenbar geirrt: es sind keineswegs die gewünschten Daten da, sondern nur Unfug.
Hier der Inhalt des korrupten cfg files
| Zitat: |
-$A8
-$B-
-$C+
-$D+
-$E-
-$F-
-$G+
-$H+
-$I+
-$J+
-$K-
-$L+
-$M-
-$N+
-$O+
-$P+
-$Q-
-$R-
-$S-
-$T-
-$U-
-$V+
-$W-
-$X+
-$Y-
-$Z1
-cg
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
-H+
-W+
-M
-$M16384,1048576
-K$00400000
-LE"C:\Programme\Borland\Delphi7\Projects"
-LN"C:\Programme\Borland\Delphi7\Projects"
|
barfuesser - Fr 05.09.03 08:20
Hi,
wie sehen Farbevon und TFarben aus?
barfuesser
dreamtheater - Fr 05.09.03 09:27
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| type TFarben=record BundMarkierung, Stimmhilfe, MarkNote, MarkTon, Hintergrund, Fixed, Noten, FixedFont:TColor; end;
var Farbevon:TFarben=( Bundmarkierung: $B1FEF9; Stimmhilfe: clSilver; MarkNote: clBlack; MarkTon: $007DD6FC; Hintergrund: $00E0FEFD; Fixed: $F0FBFF; Noten: clBlack; FixedFont: clBlack ); |
Moderiert von
Tino: Delphi-Tags hinzugefügt.
barfuesser - Fr 05.09.03 09:43
Hallo,
mir fiel leider erst jetzt auf, daß der Inhalt der Datei ziemlich in Ordnung aussieht. Delphi legt nämlich eine Datei namens Projekt-Datei + '.cfg' an. Und diese Datei versuchst Du zu überschreiben. Wahrscheinlich verhindert Delphi den Zugriff auf diese Datei. Vielleicht restauriert sie Delphi aber auch selbsständig. Versuch doch erst einmal eine andere Datei zu nehmen oder eine neue zu erstellen.
barfuesser
dreamtheater - Fr 05.09.03 18:08
Oh, danke für den Tip, da hätte ich auch selbst draufkommen können :o)! Ich werd's ausprobieren, denn an den Namen Projekt.cfg bin ich keineswegs gebunden...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!