![]() |
Runtime error 216 at 77D18C2C
hallo,
woher kommt obiger fehler? auf jedenfall wird dieser durch folgendes ausgelöst:
Delphi-Quellcode:
hFile := CreateFile(PChar(pfad),
GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0 ); ReadFile(hFile, buf, SizeOf(buf), NumberOfBytesRead, nil); MessageBox(0, PChar(string(NumberOfBytesRead)), 'hi', 0); |
Re: Runtime error 216 at 77D18C2C
Ist buf in der erforderlichen Größe bereitgestellt??
|
Re: Runtime error 216 at 77D18C2C
Ein Runtime Error 216 ist eine Zugriffsverletzung. Hast u für Deinen Buffer genug Speicher reserviert?
Gruß, teebee |
Re: Runtime error 216 at 77D18C2C
hallo,
der buffer sah so aus:
Delphi-Quellcode:
buf: Array[0..4095] of Char;
aber selbst wenn ich " buf: Array[0..1000000000] of Char;" nehme (was ziemlich lagt :D) kommt der fehler.. |
Re: Runtime error 216 at 77D18C2C
Hast Du schon mal überprüft, ob handle <> NIL ist? Vielleicht solltest Du auch noch ein Typecast auf die Winapi32-Typen machen.
|
Re: Runtime error 216 at 77D18C2C
Code:
if (hFile <> 0) then messagebox(0, 'hi', 'hi', 0);
die message wird ausgegeben, also existiert das handle. was meinst du mit api typen? |
Re: Runtime error 216 at 77D18C2C
[equote="In den MS Win32 Developer's References steht geschrieben"]HANDLE CreateFile(
LPCTSTR lpFileName, // pointer to name of the file DWORD dwDesiredAccess, // access (read-write) mode DWORD dwShareMode, // share mode LPSECURITY_ATTRIBUTES lpSecurityAttributes, // pointer to security attributes DWORD dwCreationDistribution, // how to create DWORD dwFlagsAndAttributes, // file attributes HANDLE hTemplateFile // handle to file with attributes to copy );[/equote] |
Re: Runtime error 216 at 77D18C2C
Hallo Pseudemys Nelsoni,
CreateFile gibt bei einem fehlerhaften Handle Zitat:
Delphi-Quellcode:
oder auf -1 und nicht auf 0 prüfen.
IF hFile = INVALID_HANDLE_VALUE THEN
// Fehler |
Re: Runtime error 216 at 77D18C2C
und wie zeig ich das als string an r_kerber?
btw:
Delphi-Quellcode:
´
if (hFile <> INVALID_HANDLE_VALUE) then messagebox(0, 'hi', 'hi', 0);
zeigt ebenfalls die messagebox will nur solch nen doofen string in einer dll ersetzen, man ist das schwer |
Re: Runtime error 216 at 77D18C2C
Zitat:
![]() Stichwort: NumberOfBytesRead (=Gelesen von Luckie) ist vom Typ ...) |
Re: Runtime error 216 at 77D18C2C
Moin,
das geht aber nicht, ich weiss ja nicht ob luckie da nen fehler hatte, aber "Gefunden" ist vom typ Cardinal und die funktion "ReadFile" gibt einen Boolean zurück |
Re: Runtime error 216 at 77D18C2C
Richtig, war ein kleiner fehler:
Delphi-Quellcode:
var
Gelesen: Cardinal; begin while Gelesen = 1024 do begin ReadFile(..., ..., 1024, Gelesen, nil) // mach was mit den Bytes end; |
Re: Runtime error 216 at 77D18C2C
Hallo,
ich dachte eher an Zitat:
|
Re: Runtime error 216 at 77D18C2C
hallo luckie,
würdest du mir die schleife bzw den ganzen part des codes erklären? ich verstehe nicht wie die schleife je ausgeführt wird, weil sie ja irgendwie nie "true" wird oder? ich meine am anfang hat die variable ja nicht den wert 1024. @APP: ich mache das (leider) ohne die VCL, da es ein patch wird (der nur ein string aus einer dll ersetzt) und den wollt ich nicht gerade 500kb gross werden lassen *g* also IntToStr gibt es nicht |
Re: Runtime error 216 at 77D18C2C
Hallo,
tja, das mit NonVCL hast Du mir vergessen zu sagen :( , dann musst Du Dir etwas Einfallen lassen, denn dieser Cast verursacht Deine Fehlermeldung (da "NumberOfBytesRead" ja vom Typ Cardinal ist):
Delphi-Quellcode:
VAR
NumberOfBytesRead : Cardinal; BEGIN NumberOfBytesRead := 1; MessageBox(0, PChar(STRING(NumberOfBytesRead)), 'hi', 0); //Crash END; |
Re: Runtime error 216 at 77D18C2C
hm, ich kenn keine möglichkeit einen integer in einen string umzuwandeln
|
Re: Runtime error 216 at 77D18C2C
Lad dir meine Toolbox runter, da ist alles drin.
|
Re: Runtime error 216 at 77D18C2C
ah danke, mit Str gehts :mrgreen:
eine frage nebenbei(für sowas möcht ich kein thema aufmachen), was ist das:
Delphi-Quellcode:
wofür stehen die ":" ? hab ich u.a mit bei der toolbox gefunden
function FloatToStr(Value: Extended; Width, Decimals: Integer): string;
begin Str(Value:Width:Decimals, result); end; |
Re: Runtime error 216 at 77D18C2C
Ich kann auch nur Befehle, Funktionen und Proceduren verwenden, die mir Delphi anbietet. Und die Hilfe dazu findet man in der Regel... Na? Wo? ... ;)
Mit Str mag es wohl gehen, aber wie wäre es mit IntToStr ais der Toolbox? :roll: |
Re: Runtime error 216 at 77D18C2C
ah
Zitat:
jo die funktion IntToStr benutz ich dann, danke =] |
Re: Runtime error 216 at 77D18C2C
Also ich habe so ein ähnliches Problem. Wenn ich die exe meines Programmes starten will, kommt bei mir die Meldung: runtime error 1 at 00001E7E
Ich weiß auch nicht wieso, wo die Ursache liegen könnte und wie ich das beheben muss... Kann mir jemand weiterhelfen? :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 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