API WritePrivateProfileString
Übersicht

SpechtBetreff: API WritePrivateProfileString |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo, ich würde gern mit Blitz3D Daten in ein Ini-File schreiben.
Dazu gibt es ja obenstehende API (habe ich schon oft mit VB benutzt). Habe mir die Userlibs aus dem Forum hier gezogen, jetzt funktioniert das ganze aber nicht so richtig. ![]() Hier ein Beispiel: In der Userlib: Code: [AUSKLAPPEN] api_WritePrivateProfileString% (lpApplicationName$, lpKeyName*, lpString*, lpFileName$) : "WritePrivateProfileStringA" Was genau heißen die Sternchen bei den Parametern? Und was bringt der Parameter Application? Mein Quellcode: BlitzBasic: [AUSKLAPPEN]
Beim Ausführen kommt dann immer Memory Access Violation. Vielleicht könnt ihr mir helfen? |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
* = Bank
%= Integer $ = String # = Float die win api kommt nicht, mit den BB Strings zurande. |
||
between angels and insects |
D²O |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Soweit ich noch weis, erwartet die funktion bei den Sternchen einen Pointer.
BB/+/3D kann aber keine Pointer übergeben, bzw. hat keine Pointer. Aber warum schreibst Du nicht einfach mit Writeline/String in die INI Datei? Ansonsten, schaumal in FAQ oder Code bereich, das müsste auch ein beispiel drin sein für INI Dateien. Edit: Oh, Jan_ war schneller, hmm, das mit Bank könnte auch gehen. |
||
Blitz+; Blitz3d; BlitzMax; GLBasic; Purebasic;
GameMaker Studio 1.4xx; AGK; |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
@d²o, bei Banks, kommst du an die Pointer herran. | ||
between angels and insects |
Specht |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Und wie kann man das jetzt in B3D hinkriegen?
Wie ist das mit Banks? Werde auch nochmal nach einem Beispiel suchen. |
||
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, du kannst nur Pointer von Banks überfgeben...
Das hesst du musst Testkey und Teststring mit einer Bank übergeben: BlitzBasic: [AUSKLAPPEN]
Ich weiss nicht genau ob du das 0-Byte auch angeben musst, einfach mal ausprobieren... cu simi |
||
Specht |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hab das schreiben hinbekommen, aber das lesen will jetzt nicht.
Folgender code: BlitzBasic: [AUSKLAPPEN]
Bei Value kommt auch die richtige Anzahl der Zeichen heraus (z.B. 4 für 1234) aber in die bank wird nichts reingeschrieben. ![]() Beim DebugLog mit Peekbyte kommen immer nur 0er. |
||
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, habs mir mal angeschaut...
BlitzBasic: [AUSKLAPPEN]
Bei mir gehts... Irgendwie ist auch die Definition, die du hast falsch. Alle Strings sind auch Pointer..... Code: [AUSKLAPPEN] api_GetPrivateProfileString% (lpApplicationName*, lpKeyName*, lpDefault*, lpReturnedString*, nSize%, lpFileName*) : "GetPrivateProfileStringA" cu simi |
||
Specht |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok danke, werd morgen mal schauen. Die defnitionen waren beim dl dann wohl falsch ![]() |
||
OJay |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
blubb:
Code: [AUSKLAPPEN] ; INI - handling routines using windows API
; Userlibs kernel32.decls ;.lib "kernel32.dll" ; GetPrivateProfileString%(lpApplicationName$,lpKeyName$,lpDefault$,lpReturnedString*,nSize%,lpFileName$):"GetPrivateProfileStringA" ; WritePrivateProfileString%(lpApplicationName$,lpKeyName$,lpString$,lpFileName$):"WritePrivateProfileStringA" ; read sample: ; Const INIFILE$=".\myini.ini" ; WindowsSize$=GetIniString(INIFILE,"Window","Size","Maximized") ; write sample ;SetIniString(INIFILE,"Window","Size",WindowsSize$) ; errorhandling sample ;If Not SetIniString(INIFILE,"Window","Size",WindowsSize$) Then ... (manage here your error) Function SetIniString%(FileINI$, Section$, Key$, Value$) ; FileINI = file (must include path, for current dir use .\) to write into (eg: ".\myinifile.ini") ; Section$ = section that will include your key and value (eg: "GeneralSetup") ; Key$ = Key's name for the value (eg: "BackColor") ; Value$ = Value to write in Key (eg: "ff00ff") ; If the function succedeed it return True otherwhise False ; result in myinifile.ini: ; [GeneralSetup] ; BackColor=ff00ff Ret%=WritePrivateProfileString(Section$, Key$, Value$, FileINI$) If Ret% <> 1 Then Return False Else Return True End If End Function Function GetIniString$(FileINI$,Section$,Key$,DefaultValue$) ; FileINI = file (must include path, for current dir use .\) to read (eg: "c:\windows\myinifile.ini") ; Section$ = section where search your key (eg: "GeneralSetup") ; Key$ = Key's name to search (eg: "BackColor") ; DefaultValue$ = Value to return if key or file or section is not found (eg: "ff00ff") ; Function return value retrieved from searched Key or the user's default value myString$="" myBank=CreateBank(255) LenString%=GetPrivateProfileString(Section$, Key$, DefaultValue$, myBank, 255, FileINI$) For x=1 To LenString% myString$=myString$+Chr(PeekByte(myBank,x-1)) Next FreeBank myBank Return myString$ End Function |
||
![]() |
bruZard |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wozu zur Hölle willst Du eine *.ini schreiben? Sollen etwa Third-Party Produkte auf diese Daten zugreifen? Wenn nicht: Schreibe einfach eine Textdatei ... oh Mann | ||
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
Specht |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke OJay, funktioniert wunderbar!
@bruzard: Ja, wird von Thirdparty-Programmen verwendet und ist gegenüber normalen Textfiles auf jeden Fall von Vorteil, da 1. Übersichtlich strukturiert 2. Man muss sich nicht durch de einzelnen Zeilen kämpfen => äußerst komfortabel! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group