Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Large_Integer SetFilePointerEx Error 183 (https://www.delphipraxis.net/192158-large_integer-setfilepointerex-error-183-a.html)

EWeiss 23. Mär 2017 19:18

AW: Large_Integer SetFilePointerEx Error 183
 
[QUOTE=Zacherl;1365342]
Zitat:

Zitat von EWeiss (Beitrag 1365338)
Hilft das ?

Jep. MSDN-Library durchsuchenCreateFile sagt im Bezug auf
Delphi-Quellcode:
OPEN_ALWAYS
folgendes:
Zitat:

Opens a file, always.
If the specified file exists, the function succeeds and the last-error code is set to ERROR_ALREADY_EXISTS (183).
If the specified file does not exist and is a valid path to a writable location, the function creates a file and the last-error code is set to zero.
Dementsprechend vermute ich, dass bereits dieser Aufruf bereits den 183 erzeugt und durch irgendeinen Logik Fehler (evtl. Der, den Luckie schon gefunden hatte) liest deine nachfolgende Routine den alten Code aus.

Edit:
Zitat:

Warum machst du das ganze Gedöhns eigentlich manuell mit der WinAPI und verwendest nicht
Delphi-Quellcode:
TFileStream
?
Dann gehe ich davon aus das ich gar nicht auf large_integer umsteigen muss oder? Hab noch keine APNG in der Größe von mehr wie 2GB gesehen.
Denn auch hier wird der selbe Fehler generiert.

Ignorieren oder was tun? Das ist die Frage. LOL

EDIT:
Zitat:

Warum machst du das ganze Gedöhns eigentlich manuell mit der WinAPI und verwendest nicht TFileStream ?
Würde ich gerne tun wenn ich wüsste wie.
Hab da noch nicht viel mit gemacht. ;)



gruss

Luckie 23. Mär 2017 19:21

AW: Large_Integer SetFilePointerEx Error 183
 
Er will die VCL nicht einbinden. Und dazu zählen für ihn auch die nicht sichtbaren Klassen.

EWeiss 23. Mär 2017 19:26

AW: Large_Integer SetFilePointerEx Error 183
 
Zitat:

Zitat von Luckie (Beitrag 1365345)
Er will die VCL nicht einbinden. Und dazu zählen für ihn auch die nicht sichtbaren Klassen.

Nein hat damit nichts zu tun ;)
Würde TFileStream verwenden wenn ich damit mehr Erfahrung hätte.

Wüsste jetzt nicht das TFileStream ein THandle zurück liefert.
Und wie ich solche dinge damit behandeln sollte

Delphi-Quellcode:
BufferSize := FLof(hFileIn) - anih.offset - sizeof(anih) + 1;


Der sinn des ganzen ist, eine APNG Classe zur Verfügung zu stellen ohne 1000 Units einer mitunter nicht funktionierenden Library einzubinden.
Ich bin gern unabhängig von fremden Komponenten und mit den Aufwand diese alle einzubinden.
Das ist ein Hobby von mir und ich teile gern.


gruss

Luckie 23. Mär 2017 19:32

AW: Large_Integer SetFilePointerEx Error 183
 
Tut es, aber nur intern, davon bekommst du nichts mit, weil es in der TFileStream Klasse gekapselt wird. Aber, ich glaube, man kann kann das handle über eine Property abfragen.

Zacherl 23. Mär 2017 19:34

AW: Large_Integer SetFilePointerEx Error 183
 
Das Problem ist NICHT MSDN-Library durchsuchenSetFilePointer oder MSDN-Library durchsuchenSetFilePointerEx, sondern ein Logikfehler an anderer Stelle, der deine eigene
Delphi-Quellcode:
Seek
-Funktion fälschlicherweise den alten Error Code von MSDN-Library durchsuchenCreateFile zurückgeben lässt. Sprich: Eigentlich gibt es keinen Fehler, aber dein eigener Code denkt dennoch, dass Einer aufgetreten ist. Dieses Logikproblem solltest du als allererstes beheben. Danach - wenn es tatsächlich Non-VCL und auch Non-RTL sein soll - würde ich auf
Delphi-Quellcode:
OPEN_EXISTING
umsteigen, da es für deinen rein lesenden Anwendungszweck die deutlich bessere Wahl ist.

Wenn die RTL bzw.
Delphi-Quellcode:
TFileStream
ok ist, dann wäre dies auf jeden Fall die allereinfachste Möglichkeit. Das eigentliche Datei-Handle wird vom Stream weggekapselt, aber das solltest du eigentlich auch gar nicht benötigen. Btw.
Delphi-Quellcode:
TFileStream
unterstützt (zumindest in Delphi 10.1) auch ein
Delphi-Quellcode:
Seek
mit 64-Bit Offset, wobei das wohl tatsächlich bei dir nicht von Relevanz ist.

EWeiss 23. Mär 2017 19:35

AW: Large_Integer SetFilePointerEx Error 183
 
Zitat:

Zitat von Luckie (Beitrag 1365348)
Tut es, aber nur intern, davon bekommst du nichts mit, weil es in der TFileStream Klasse gekapselt wird. Aber, ich glaube, man kann kann das handle über eine Property abfragen.

Wie gesagt wenn sich jemand bereit erklärt das Step für Step mit mir durchzugehen würde ich lieber die TFileStream Klasse verwenden.
Zumal der Code dadurch übersichtlicher wird.
Alleine schaffe ich das nicht.

gruss

EWeiss 23. Mär 2017 19:37

AW: Large_Integer SetFilePointerEx Error 183
 
Zitat:

da es für deinen rein lesenden Anwendungszweck die deutlich bessere Wahl ist.
Im Moment noch aber später nicht mehr.
Denn ich muss die geänderten Geschwindigkeiten in das APNG hinein schreiben.

gruss

Zacherl 23. Mär 2017 19:39

AW: Large_Integer SetFilePointerEx Error 183
 
Zitat:

Zitat von EWeiss (Beitrag 1365352)
Zitat:

da es für deinen rein lesenden Anwendungszweck die deutlich bessere Wahl ist.
Im Moment noch aber später nicht mehr.
Denn ich muss die geänderten Geschwindigkeiten in das APNG hinein schreiben.

Okay, aber trotzdem willst du ja allerhöchstens die bereits existierende PNG modifizieren und nicht im Falle der Nicht-Existenz eine leere Datei erstellen.

EWeiss 23. Mär 2017 19:40

AW: Large_Integer SetFilePointerEx Error 183
 
Zitat:

Zitat von Zacherl (Beitrag 1365353)
Zitat:

Zitat von EWeiss (Beitrag 1365352)
Zitat:

da es für deinen rein lesenden Anwendungszweck die deutlich bessere Wahl ist.
Im Moment noch aber später nicht mehr.
Denn ich muss die geänderten Geschwindigkeiten in das APNG hinein schreiben.

Okay, aber trotzdem willst du ja allerhöchstens die bereits existierende PNG modifizieren und nicht im Falle der Nicht-Existenz eine leere Datei erstellen.

Richtig :thumb:

EDIT:
Wenn Interesse besteht könnte man ja einen neuen Thread aufsetzen der sich mit dem TFileStream befasst.
Wäre auch unterumständen Interessant für andere Community Mitglieder ;)

gruss

Luckie 23. Mär 2017 19:53

AW: Large_Integer SetFilePointerEx Error 183
 
Dazu gibt es bestimmt in Netz Tutorials.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:00 Uhr.
Seite 2 von 3     12 3      

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