OpenFile - Kein Fehler!

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
MASH
Beiträge: 130
Registriert: 22.05.2005 17:43

OpenFile - Kein Fehler!

Beitrag von MASH »

Kann mir mal jemand sagen weshalb ich keine Fehlermeldung erhalte wenn ich diese datei öffne (Die Datei ist nicht Vorhanden).

Ich erhalte nur "-1".

Code: Alles auswählen

OpenFile_("C:\Thema.TXT",Space(255),OF_PROMPT)
im API-Guide steht:
OF_PROMPT
Displays a dialog box if the requested file does not exist. The dialog box informs the user that Windows cannot find the file, and it contains Retry and Cancel buttons. Choosing the Cancel button directs OpenFile to return a file-not-found error message.

Habe ich etwas übersehen??
Danke Mark S.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Code: Alles auswählen

Buffer.s = Space(255)
OpenFile_("C:\Thema.TXT",@Buffer, #OF_PROMPT)
Konstanten wird in PureBasic ein # vorangestellt. Das mit dem Pointer zu einem Buffer hab ich dann auch gleich korrigiert, obwohl daran lags nicht
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
MASH
Beiträge: 130
Registriert: 22.05.2005 17:43

Beitrag von MASH »

Wo ist denn der unterschied zwischen Pointer und Buffer?

Und wie erhalte ich eine Meldung mit "#OF_CANCEL"??
Danke Mark S.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

MASH hat geschrieben:Wo ist denn der unterschied zwischen Pointer und Buffer?
Die API-Funktion erwartet die Adresse (Pointer) des Buffers um evtl Werte dort hineinzuschreiben.
MASH hat geschrieben: Und wie erhalte ich eine Meldung mit "#OF_CANCEL"??
Dieser Parameter wird ignoriert. Ist Wohl aus kompatibilität zu älteren Windows-Versionen (16-Bit ?) enthalten.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Um das jetzt etwas ausführlicher zu erklären:
Ein Buffer ist ein Speicherberreich in dem gearbeitet werden kann. Dieser
kann z.B. für Dateioperationen genutzt werden. Auch eine in PureBasic
deklarierte Variable ist ein Buffer, da man mit der Varlaibe arbeite kann.

Ein Pointer dagegen ist eine Zahl, die den aktuellen Aufenthalt des Buffers
im Speicher darstellt. Eine außenstehende Procedur kann nicht genau
erahnen, wo die Variable genau liegt, da nur die Werte auf einen Stack
gepusht werden. Deswegen muss man einen Pointer übergeben.
Bild
Antworten