AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TFilestream.Size zu groß unter Windows 7
Thema durchsuchen
Ansicht
Themen-Optionen

TFilestream.Size zu groß unter Windows 7

Ein Thema von arnold mueller · begonnen am 28. Nov 2010 · letzter Beitrag vom 29. Nov 2010
Antwort Antwort
Seite 1 von 2  1 2      
arnold mueller

Registriert seit: 27. Jul 2005
129 Beiträge
 
#1

TFilestream.Size zu groß unter Windows 7

  Alt 28. Nov 2010, 13:11
Delphi-Version: XE
Hallo zusammen!

TFilestream.Size liefert unter Windows 7 nicht den gleichen Wert wie unter Windows XP.

Die Datei hat laut HxD-Editor 783 Bytes. Windows XP und auch Windows 7 zeigen unter den Dateieigenschaften 784 Bytes an. TFilestream.Size liefert unter XP 780 Bytes, unter Windows 7 784 Bytes.

Zu allem Überfluss liefert der folgende Code unter Windows 7 auch 780 Bytes:

Delphi-Quellcode:
    try
      iFileHandle := SysUtils.FileOpen(FileName, fmOpenRead);
      iFileLength := SysUtils.FileSeek(iFileHandle,0,2);
    finally
      FileClose(iFileHandle);
    end;
Was stimmt den nun? 783 Bytes scheinen plausibel da HxD 0x30F (783) anzeigt, wenn ich den Cursor auf das letzte Byte stelle. Mein Programm läuft aber seit Tag und Jahr problemlos unter Windows XP, also mit 780 Bytes. Irgendwelche Ideen?

-
arno
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

AW: TFilestream.Size zu groß unter Windows 7

  Alt 28. Nov 2010, 13:15
Hallo,
783 Bytes scheinen plausibel da HxD 0x30F (783) anzeigt, wenn ich den Cursor auf das letzte Byte stelle.
Dann sollte die Datei aber 784 Byte lang sein, denn das erste Byte hat ja die Position null. Das ist auch konsistent mit den Dateieigenschaften bzw. der Dateigröße unter Win7.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
arnold mueller

Registriert seit: 27. Jul 2005
129 Beiträge
 
#3

AW: TFilestream.Size zu groß unter Windows 7

  Alt 28. Nov 2010, 13:23
Zitat:
Dann sollte die Datei aber 784 Byte lang sein, denn das erste Byte hat ja die Position null.
Stimmt!

Aber wie kommen dann die 780 Bytes zustande?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: TFilestream.Size zu groß unter Windows 7

  Alt 28. Nov 2010, 13:48
Hallo,

vielleicht spielt BOM (Byte Order Mark; 3Byte) eine Rolle?

..noch einen schönen ersten Advent

Klaus
Klaus
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: TFilestream.Size zu groß unter Windows 7

  Alt 28. Nov 2010, 13:49
Da gibts doch diesen Unicode-Prefix, hat der vielleicht etwas damit zu tun?
Wieso verwendest Du nicht die FileSize-Funktion? Eventuell ist die abwärtskompatibel.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
arnold mueller

Registriert seit: 27. Jul 2005
129 Beiträge
 
#6

AW: TFilestream.Size zu groß unter Windows 7

  Alt 28. Nov 2010, 14:42
Wieso verwendest Du nicht die FileSize-Funktion? Eventuell ist die abwärtskompatibel.
FileSize - oder auch der Code von oben - würde mein Problem sicher lösen, nur würde ich auch gerne die Ursache verstehen



Da gibts doch diesen Unicode-Prefix, hat der vielleicht etwas damit zu tun?
Die Datei wurde mit einem Delphi-Compiler < 2009 erstellt. Es wäre möglich, das TFilestream im aktuellen Compiler anders damit umgeht. Das ist ein guter Hinweis dem ich nachgehen werde, danke dafür. Dir auch, Klaus01.


Gleichfalls noch einen schönen 1. Advent ...

arno
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TFilestream.Size zu groß unter Windows 7

  Alt 28. Nov 2010, 16:36
Die alten Pascal-Funktionen kennen kein Unicode ... auch unter D2009+ sind und bleiben sie ANSI (da Emba dieses aus Kompatiblitätsgründen so belassen hat, oder sie hatten einfach keine Lust, sie zu erweitern)

Hast du mal soeine Datei für uns?
(auch wenn ich mir nicht vorstellen kann, daß der Dateiinhalt irgendeinen einfluß auf den TFileStream haben sollte)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (28. Nov 2010 um 16:40 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: TFilestream.Size zu groß unter Windows 7

  Alt 28. Nov 2010, 17:04
Von was für einer Datei reden wir hier eigentlich?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
arnold mueller

Registriert seit: 27. Jul 2005
129 Beiträge
 
#9

AW: TFilestream.Size zu groß unter Windows 7

  Alt 29. Nov 2010, 09:03
Hallo zusammen!

um es kurz zu machen, das Problem lag weder an Windows 7 noch an TFileStream, es lag bzw. saß vor dem Bildschirm...

Unsere Software wird auf Windows 7 gehoben. Bei der Datei handelt es sich um eine Lizenzdatei, eine Binärdatei mit teils verschlüsselten und auch unverschlüsselten Datenbereichen. In der Windows 7 Umgebung bekam ich immer einen CRC Fehler - und zwar vollkommen zurecht, es war eine Testdatei - allerdings habe ich beim Vergleich mit Windows XP angenommen dieselben Dateien zu vergleichen. Dem war leider nicht so.

Immerhin hat die Fehlersuche etwas Gutes. Die Implementation von TFilestream in D2007 unterscheidet sich nicht grundlegend von der in DXE.

Und offensichtlich arbeitet EMBA an der Crossplattform-Fähigkeit

Delphi-Quellcode:
unit Classes;


// Delphi 2007

{$IFDEF MSWINDOWS}
uses Windows, Messages, SysUtils, Variants, TypInfo, ActiveX;
{$ENDIF}
{$IFDEF LINUX}
uses Libc, SysUtils, Variants, TypInfo, Types;
{$ENDIF}

// Delphi XE

{$IFDEF MSWINDOWS}
  Windows, Messages, ActiveX,
{$ENDIF MSWINDOWS}
{$IFDEF POSIX}
  Types, PosixSysTypes, PosixUniStd, PosixSignal,
{$ENDIF POSIX}
{$IFDEF MACOS}
  CoreServices,
{$ENDIF MACOS}
  SysUtils, Variants, TypInfo;

Danke für euer Feedback,
arno
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: TFilestream.Size zu groß unter Windows 7

  Alt 29. Nov 2010, 09:14
Und offensichtlich arbeitet EMBA an der Crossplattform-Fähigkeit
Was du in deinem Delphi2007 sieht sind überbleibsel des CLX/Kylix-Unglücks von Delphi 6/7.

Erst mit Delphi XE2 kommt wieder Plattformunabhängigkeit ins spiel.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:11 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