CreateFile_()
CreateFile_()
Tach.
Ich hab ein kleines Problem. Ich habe bis jetzt noch nicht so viel mit APIs gearbeitet. Vor allem nicht mit der CreateFile_() API. Ich benutze die API_FileHandle Include von jaPBe und mein Problem ist nu, dass ich eine Datei so öffnen möchte, wie es PB unter OpenFile() macht. OpenFile() möchte ich deshalb nicht direkt benutzen, da es ein paar konflikte mit der RFile Lib von TS-Soft gibt. Kann mir da jemand helfen ?
Ich hab ein kleines Problem. Ich habe bis jetzt noch nicht so viel mit APIs gearbeitet. Vor allem nicht mit der CreateFile_() API. Ich benutze die API_FileHandle Include von jaPBe und mein Problem ist nu, dass ich eine Datei so öffnen möchte, wie es PB unter OpenFile() macht. OpenFile() möchte ich deshalb nicht direkt benutzen, da es ein paar konflikte mit der RFile Lib von TS-Soft gibt. Kann mir da jemand helfen ?
Re: CreateFile_()
Da Du nicht schreibst, was genau Du vorhast, hier mal ein einfaches (generelles) Beispiel:
Für eine Erklärung der einzelnen Parameter einfach mal bei MSDN schauen...
Code: Alles auswählen
; Datei erstellen (Lese- und Schreibrecht)
hFile = CreateFile_("testing.txt", #GENERIC_READ | #GENERIC_WRITE, #FILE_SHARE_READ, #NULL, #OPEN_ALWAYS, #FILE_ATTRIBUTE_NORMAL, #NULL)
If hFile <> #INVALID_HANDLE_VALUE
; String in die Datei schreiben
myString.s = "Testing, testing, 1,2, 1,2"
WriteFile_(hFile, myString, Len(myString), @actBytes.l, #NULL)
; wieder an den Anfang zurückgehen...
SetFilePointer_(hFile, 0, 0, #FILE_BEGIN)
; ... den geschriebenen String wieder auslesen...
myString2.s = Space(Len(myString))
ReadFile_(hFile, @myString2, Len(myString), @actBytes, #NULL)
; ... und anzeigen
Debug myString2
; Datei schließen.
CloseHandle_(hFile)
EndIf
Für eine Erklärung der einzelnen Parameter einfach mal bei MSDN schauen...
Sry, für doppel post aber hab ein neues Problem
. Ich hab nun ne Funktion, mit der ich eine Funktion ähnlich wie OpenFile() öffnen kann. Hier mal die Funktion:
Doofe nur ist, dass wenn ich was in die Datei schreibe, der alte Inhalt überschrieben wird. Wie kann ich ein FileSeek mit APIs bewerkstelligen?

Code: Alles auswählen
Procedure API_FileAppend(*File.API_FileHandle, file$)
*File\FHandle = CreateFile_(file$, #GENERIC_WRITE, 0, 0, #OPEN_ALWAYS, #FILE_ATTRIBUTE_NORMAL, 0)
If *File\FHandle = #INVALID_HANDLE_VALUE
ProcedureReturn #False
Else
ProcedureReturn #True
EndIf
EndProcedure
Siehe mein Beispiel: "SetFilePointer()"MVXA hat geschrieben:Wie kann ich ein FileSeek mit APIs bewerkstelligen?
Code: Alles auswählen
#FILE_BEGIN
The starting point is zero or the beginning of the file.
If #FILE_BEGIN is specified, DistanceToMove is interpreted
as an unsigned location for the new file pointer.
#FILE_CURRENT
The current value of the file pointer is the starting point.
#FILE_END
The current end-of-file position is the starting point.
Zuletzt geändert von traumatic am 20.02.2005 17:07, insgesamt 1-mal geändert.
Ehm, Hopalatraumatic hat geschrieben:Siehe mein Beispiel: "SetFilePointer()"


edit.
Frage hab ich noch.
was ist lDistanceToMove und lpDistanceToMoveHigh? Wenn ich des richtig vesrtehe sind das gleiche Werte aber mit verschiedenen Variable Typen o_O.Typ bei MSDN hat geschrieben:DWORD SetFilePointer(
HANDLE hFile,
LONG lDistanceToMove,
PLONG lpDistanceToMoveHigh,
DWORD dwMoveMethod
);
Wo guckst Du da nach?MVXA hat geschrieben: was ist lDistanceToMove und lpDistanceToMoveHigh?

Sollte selbst erklärend sein:
Code: Alles auswählen
lDistanceToMove
Specifies the number of bytes to move the file pointer.
A positive value moves the pointer forward in the file
and a negative value moves it backward.
lpDistanceToMoveHigh
Points to the high-order word of the 64-bit distance to
move.
If the value of this parameter is NULL, SetFilePointer
can operate only on files whose maximum size is 2^32 - 2.
If this parameter is specified, the maximum file size is
2^64 - 2. This parameter also receives the high-order
word of the new value of the file pointer.

Das API-SEEK hab ich in der neusten Version von jaPBe eingefügt.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Re: CreateFile_()
Was mir gerade noch einfällt:
Ich nehme an, dass dies die Ursache Deiner Probleme ist (?)
Vielleicht solltest Du TS-Soft mal dazu überreden, #PB_Any zu benutzen.MVXA hat geschrieben:da es ein paar konflikte mit der RFile Lib von TS-Soft gibt.
Ich nehme an, dass dies die Ursache Deiner Probleme ist (?)
@traumatic
Ist es nicht. Das Problem liegt irgendwo ganz weit unten bei PB. Wenn ich die RFile in kombination mit FileCreate benutze, kann ich in meine geöffnete Datei nichts schreiben. TS-Soft wollte die Lib schon auf API umstellen aber wie es aussieht hat er ncoh wichtigeres zu tun
.
@GPI
Ehm, wäre schön wenn du neben API_FileCreate und API_FileRead auch API_FileAppend einbauen könnetst. Das fehlt mir bei den Includes...
.
Ist es nicht. Das Problem liegt irgendwo ganz weit unten bei PB. Wenn ich die RFile in kombination mit FileCreate benutze, kann ich in meine geöffnete Datei nichts schreiben. TS-Soft wollte die Lib schon auf API umstellen aber wie es aussieht hat er ncoh wichtigeres zu tun

@GPI
Ehm, wäre schön wenn du neben API_FileCreate und API_FileRead auch API_FileAppend einbauen könnetst. Das fehlt mir bei den Includes...
