AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit FileRead

Ein Thema von _Ben_ · begonnen am 27. Mai 2004 · letzter Beitrag vom 28. Mai 2004
 
Benutzerbild von Luckie
Luckie

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

Re: Problem mit FileRead

  Alt 28. Mai 2004, 00:21
Zitat von SirThornberry:
Wenn 0 zurück gegeben wird hat es geklappt. Die Hilfe sagt
Zitat:
The function result is the actual number of bytes read, which may be less than Count.
Was soviel heißt dass, das result der function die differenz zwischen zu lesenden bytes und gelesenen bytes zurück gibt.
Das sehe ich nicht so:
Zitat:
Das Rückgabewert der Funktion ist die tatsächlich gelesene Anzahl an Bytes, welche auch kleiner sein kann. als die Anzahl, die gelesen werden soll.
Wird also 0 zurückgegeben, dann wurde gar nichts gelesen wie _Ben_ schon richtig erkannt hat. Ich arbeite gerade an dem Problem.

So, habe jetzt was:
Delphi-Quellcode:
function GetTagVersion(Filename: String; var TagInfo: TtagInfo): DWORD;
var
  hFile: THandle;
  dummy: TTagInfo;
begin
  SetLastError(0);
  hFile := FileOpen(Filename, fmOpenRead or fmShareDenyNone);
  if hFile <> 0 then
  begin
    // Muss Offset nicht drei sein?
    // Du willst doch die letzten drei Byte auslesen, also musst du
    // vom Dateiende drei Bytes zurückgehen und ab da lesen.
    // (Ist nur so eine Vermutung, korrigier mich, wenn ich falsch
    // liegen sollte.)
    if FileSeek(hFile, 3, 2) <> -1 then
    begin
      FileRead(hFile, dummy, sizeof(TTagInfo));
    end;
    FileClose(hFile);
  end;
  TagInfo := dummy;
  Result := GetLastError();
end;

function TagInfoToHexStr(TagInfo: TTagInfo): String;
var
  s: String;
  i: Integer;
begin
  for i := 0 to 2 do
  begin
    s := s + IntToHex(TagInfo[i], 4)+ ' ';
  end;
  result := s;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  TagInfo: TTagInfo;
  dwReturn: DWORD;
begin
  dwReturn := GetTagVersion('G:\MP3s\Beatles\Beatles - Blue Jay Way.mp3', TagInfo);
  if dwReturn = 0 then
  begin
    ShowMessage(TagInfoToStr(TagInfo));
  end
  else
    ShowMessage(SysErrorMessage(dwReturn));
end;
Bei dieser Datei sind die letzten drei Bytes: $0000 $006E $0000.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
 


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 22:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz