![]() |
TMemoryStream zu CreateFile ummodeln.. -.-
Hi,
ich mal wieder... :stupid: Ich möchte mir eine Art MemoryStream oder besser gesagt einen Dateiöffner basteln. So klappts anscheind nicht, da die Daten nur Müll enthalten:
Delphi-Quellcode:
Nu ist die Frage, hab ich es richtig so ? :gruebel:
var
mem: pointer = nil; function(FName: PChar): bool; var hFile: THandle; Size: Cardinal; dummy: Cardinal; begin Result := False; hFile := CreateFileA(FName, GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); try if hFile <> 0 then begin Size := GetFileSize(hFile, nil); GetMem(mem, Size); ReadFile(hFile, mem, size, dummy, nil); end; finally CloseHandle(hFile); end; result := (hFile <> 0) and (mem <> nil); end; // function MemDone ... // FreeMem(mem); // mem := nil |
Re: TMemoryStream zu CreateFile ummodeln.. -.-
Versuchs mal mit mem^ beim ReadFile.
|
Re: TMemoryStream zu CreateFile ummodeln.. -.-
oder TMemoryStream nehmen
.LoadFromFile die Datei laden und .Memory zeigt auf den Speicher (würde praktisch deinem mem entsprechen) |
Re: TMemoryStream zu CreateFile ummodeln.. -.-
Zitat:
Zitat:
Aber ich würde es gern mal mit CreateFile & Co versuchen. man kanns sich ja auch schwehr machen (wollen) >.< |
Re: TMemoryStream zu CreateFile ummodeln.. -.-
Gibt deine function denn true zurück?
Step mal durch. Guck mal ob die Größe (Size) stimmt. Und dann muss es wie schon gesagt mem^ heißen bei ReadFile.. Gruß Neutral General |
Re: TMemoryStream zu CreateFile ummodeln.. -.-
wenn du es wirklich schwer haben willst, dann schau in meinen FileSplitter, da hab ich das ins Extreme getrieben :oops: (ja, ich bin verspielt)
aber eigentlich sollte es so gehn
Delphi-Quellcode:
ReadFile(hFile, mem^, size, dummy, nil);
PS:
Code:
und das ist -1 bzw $FFFFFFFF
if hFile <> [b]INVALID_HANDLE_VALUE[/b] then
also bist'e dir sicher, daß deine Datei wirklich geöffnet wurde? :stupid: PSS: Zitat:
|
Re: TMemoryStream zu CreateFile ummodeln.. -.-
Hi,
Also hab mal was gebaut.. Das hier geht:
Delphi-Quellcode:
function OpenFile(FName: String): Pointer;
var h: hFile; len: Cardinal; begin Result := nil; h := CreateFile(PChar(FName),GENERIC_READ,FILE_SHARE_READ, nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); if h <> INVALID_HANDLE_VALUE then begin len := GetFileSize(h,nil); GetMem(Result,len); ReadFile(h,Result^,len,len,nil); CloseHandle(h); end; end; procedure TForm1.Button1Click(Sender: TObject); begin // Zu Testzwecken wird auf guten Stil verzichtet :) Memo1.Text := PChar(OpenFile('C:\bsp.ini')); end; |
Re: TMemoryStream zu CreateFile ummodeln.. -.-
Zitat:
|
Re: TMemoryStream zu CreateFile ummodeln.. -.-
Ich ... :wall:
Delphi-Quellcode:
:dance:
var
bing: pointer; function bla(p: pointer)... begin if bla(@bing) then... end. |
Re: TMemoryStream zu CreateFile ummodeln.. -.-
Zitat:
Das war nur schnell zum Testen obs funktioniert :zwinker: @turboPASCAL: Das sind die tollsten Fehler :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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