Seite 1 von 1

GetPrivateProfileSection

Verfasst: 23.06.2005 23:29
von jpd
Hi All,

ich habe ein kleines problem ...

über diesen API aufruf ist es möglich die "sektion" einer ini-datei auszulesen... und in einen string zu übergeben!

The format of the returned keys and values is one or more null-terminated strings, followed by a final null character

z.b.
  • [section_1]
    value1=1
    test=4
    value2=2
    value3=3

Code: Alles auswählen

buffer.s=Space(32767)
size.l=32767
sect.s="section_1"
path.s="C:\test\config.ini"
result.l =GetPrivateProfileSection_(@Sect, @Buffer, size, Path)

Debug buffer
mein problem ist das buffer nicht alle zeile beinhaltet ...
value1=1 test=4 value2=2 value3=3
sondern nur die erste
value=1

meine frage ist natürlich ....
was mache ich falsch?


Grüsse

JPD

anbei die infos über diesen api aufruf im MSDN:


DWORD GetProfileSection(
LPCTSTR lpAppName, // address of section name
LPTSTR lpReturnedString, // address of return buffer
DWORD nSize // size of return buffer
);

Parameters
lpAppName
Pointer to a null-terminated string containing the section name in the WIN.INI file.
lpReturnedString
Pointer to a buffer that receives the keys and values associated with the named section. The buffer is filled with one or more null-terminated strings; the last string is followed by a second null character.
nSize
Specifies the size, in characters, of the buffer pointed to by the lpReturnedString parameter.

Verfasst: 24.06.2005 01:00
von ts-soft
Statt eines Stringbuffers solltest Du Allocate Memory verwenden und anschießend z.B. Byteweise auslesen, bis 2 Chr(0) vorhanden waren. Danach kannste mit Stringfield oder sonstwas weiterarbeiten um an alle Werte zu kommen

Verfasst: 24.06.2005 10:32
von jpd
Hallo Ts-soft,
habe allocate memory verwendet ...

mit den gleichen ergebniss! nur
die erste zeile der section werden ausgelesen ...

habe ich das richtig umgesetzt?

Vielen Dank
JPD

Code: Alles auswählen

size.l=32767
*MemBuffer = AllocateMemory(size) 

sect.s="section_1"
path.s="C:\test\config.ini"
result.l =GetPrivateProfileSection_(@Sect, *MemBuffer, @size, Path)

Debug Membuffer
 Debug Result
 
 String$ = PeekS(*MemBuffer, result)
Debug string$
 FreeMemory(MemBuffer) 

Verfasst: 24.06.2005 11:40
von HeX0R
Vielleicht so ?

Code: Alles auswählen

size.l=32767 
*MemBuffer = AllocateMemory(size) 

Sect.s = "section_1"
Path.s = "C:\test\config.ini"
Result.l =GetPrivateProfileSection_(@Sect, *MemBuffer, size, @Path)

Debug *Membuffer 
Debug Result 

Repeat
  String$ = PeekS(*MemBuffer, result)
  Debug String$
  *MemBuffer + Len(String$) + 1
Until String$ = ""
FreeMemory(*MemBuffer)

Verfasst: 24.06.2005 11:56
von jpd
Ja, super... :allright:

ich denke mit meine programmierung künste muss ich noch einiges dran machen ...

üben üben üben ....

wichtig ist das es spass macht :)


Danke
JPD