AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi ReadFile liest nicht die ganze Datei
Thema durchsuchen
Ansicht
Themen-Optionen

ReadFile liest nicht die ganze Datei

Ein Thema von Cmd.exe · begonnen am 15. Sep 2006 · letzter Beitrag vom 15. Sep 2006
Antwort Antwort
Cmd.exe

Registriert seit: 15. Jul 2005
Ort: Ingolstadt
8 Beiträge
 
Delphi 2006 Architect
 
#1

ReadFile liest nicht die ganze Datei

  Alt 15. Sep 2006, 20:17
Hi Leute,
mein Problem hab ich im source code beschrieben. Hoffe ihr könnt mir helfen

Delphi-Quellcode:
//Beispielcode
//APIs.GetFileSize nutzt in dem Fall FindFirstFile um Größe der Datei zu erhalten (funktioniert)
var Buffer: pchar;
    i64: int64;
    hHandle: integer;
    lpNumberOfBytesRead: cardinal;
begin
  i64 := APIs.GetFileSize(ExtractFilePath(ParamStr(0)) + 'Skin.cont');
  hHandle := // FileHandle
             CreateFile(pChar(ExtractFilePath(ParamStr(0)) + 'Skin.cont'), GENERIC_READ, FILE_SHARE_READ, Nil, OPEN_EXISTING, 0, 0);
  SetFilePointer // Pointer um von Anfang an zu lesen
                 (hHandle, 0, 0, FILE_BEGIN);
  GetMem(Buffer, i64);
  ReadFile(hHandle, Buffer^, i64, lpNumberOfBytesRead, NIL);
  FreeMem(Buffer, i64); //Breakpoint
end;
//Problem: lpNumberOfBytesRead sagt mir, dass es die volle Byte Zahl gelesen hat,
// jedoch ist nur ein geringer Teil (Anfang der Datei) im Buffer, wenn ich am Breakpoint mir den Buffer anzeigen lasse.
Vielen dank schonmal im voraus.
Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit,
aber bei dem Universum bin ich mir noch nicht ganz sicher.
Albert Einstein
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: ReadFile liest nicht die ganze Datei

  Alt 15. Sep 2006, 20:48
Bist du die sicher, daß nicht nur ein Teil angezeigt wird?
Markus Kinzler
  Mit Zitat antworten Zitat
Cmd.exe

Registriert seit: 15. Jul 2005
Ort: Ingolstadt
8 Beiträge
 
Delphi 2006 Architect
 
#3

Re: ReadFile liest nicht die ganze Datei

  Alt 15. Sep 2006, 21:31
Ich bin mir insofern sicher, dass nicht nur ein teil angezeigt wird, weil Length(Buffer) auch nur die anzahl an zeichen ergibt, die mir delphi anzeigt.
Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit,
aber bei dem Universum bin ich mir noch nicht ganz sicher.
Albert Einstein
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: ReadFile liest nicht die ganze Datei

  Alt 15. Sep 2006, 21:35
Schreibe mal die volel Anzahl bytes in einen andere datei und vergleiche sie mit der ursprünlichen.
Markus Kinzler
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: ReadFile liest nicht die ganze Datei

  Alt 15. Sep 2006, 21:48
PChar => er beachtet das Nullbyte. Daher wird der hint an einem solchen abgeschnitten, somit zeigt er dir zu wenig an. Length() wiederrum wird den PChar als String übergeben bekommen und diese Konvertierung beachtet genauso das Nullbyte. Entweder benutzt du einen allgemeineren Datenzeiger-Typ oder du schaust dir den Inhalt mit Routinen an, welche sich auf die wahre Länge verlassen. Wenn ReadFile() sagt er habe soviel gelesen, dann hat er es auch.

Ansonsten: afaik ist die Dateiposition nach dem Öffnen immer bei Offset 0.
  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 09:02 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