Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C++ und WritePrivateProfileString was mach ich falsch? (https://www.delphipraxis.net/144773-c-und-writeprivateprofilestring-mach-ich-falsch.html)

R2009 16. Dez 2009 06:46


C++ und WritePrivateProfileString was mach ich falsch?
 
Hi,
ich nutze WritePrivateProfileString um Einträge in eine ini Datei zu schreiben.
Das Beispiel habe ich im Internet gefunden. Nur funktioniert das ganze nicht.
Der Code lässt sich mit VS5 kompilieren.
Weiss jemand was ich falsch mache?

Zitat:

WritePrivateProfileString((LPCWSTR)"common",(LPCWS TR)"EinPfad",(LPCWSTR)"c:\\lol\\",(LPCWSTR)"c:\tes t.ini");
Grüsse
Rainer

Luckie 16. Dez 2009 09:22

Re: C++ und WritePrivateProfileString was mach ich falsch?
 
Und was heißt jetzt: "Nur funktioniert das ganze nicht."

R2009 16. Dez 2009 09:26

Re: C++ und WritePrivateProfileString was mach ich falsch?
 
Hi Luckie,

der Code wird anstandslos kompiliert.
Nur mir fehlt ein Resultat wenn ich das laufen lasse.
Egal ob in c:\ eine datei test.ini existiert oder nicht es passiert nichts.
Kein Eintrag keine Fehlermeldung nichts.

Grüsse
rainer

Bernhard Geyer 16. Dez 2009 09:32

Re: C++ und WritePrivateProfileString was mach ich falsch?
 
Zitat:

Zitat von R2009
Egal ob in c:\ eine datei test.ini existiert oder nicht es passiert nichts.

Glaskugel auspack: Vista/Win7 mit aktiver UAC am laufen?

R2009 16. Dez 2009 09:35

Re: C++ und WritePrivateProfileString was mach ich falsch?
 
Panje debolschke dobischee....

Glaskugel einpack, WinXP Servicepack3, HP TFT schwarze Tatstatur

Weiss nicht was das mit diesem Problem zu tun hat

Grüsse
Rainer

Bernhard Geyer 16. Dez 2009 09:36

Re: C++ und WritePrivateProfileString was mach ich falsch?
 
Zitat:

Zitat von R2009
Weiss nicht was das mit diesem Problem zu tun hat

Virtuelles Dateisystem. Schreiben auf C:\ wird ins Profil umgeleitet. Du siehst also die Änderungen nicht mit dem Windows-Explorer.

R2009 16. Dez 2009 09:41

Re: C++ und WritePrivateProfileString was mach ich falsch?
 
Hi Bernhard,
das ist nicht das Problem. Hab winxp und mach das Gleiche mit Delphi, dort funktionierts.

Grüsse
rainer

Bernhard Geyer 16. Dez 2009 09:50

Re: C++ und WritePrivateProfileString was mach ich falsch?
 
Zitat:

Zitat von R2009
Code:
(LPCWSTR)"c:\\lol\\",(LPCWSTR)"c:\test.ini");

einmal Doppel-Backslash, einmal nur einfach :gruebel:

DeddyH 16. Dez 2009 09:51

Re: C++ und WritePrivateProfileString was mach ich falsch?
 
Zitat:

Zitat von MSDN
If the function fails, or if it flushes the cached version of the most recently accessed initialization file, the return value is zero. To get extended error information, call GetLastError.


Mithrandir 16. Dez 2009 09:52

Re: C++ und WritePrivateProfileString was mach ich falsch?
 
Bei C++ wird ein WinAPI-Aufruf eigentlich so gemacht:
Code:
WritePrivateProfileString(TEXT("common"), TEXT("EinPfad"), TEXT("c:\\lol\\"), TEXT("c:\\test.ini"));
bzw
Code:
WritePrivateProfileString(_T("common"), _T("EinPfad"), _T("c:\\lol\\"), _T("c:\\test.ini"));

DeddyH 16. Dez 2009 09:57

Re: C++ und WritePrivateProfileString was mach ich falsch?
 
Aber dann mit doppelten Backslashes, da diese sonst als Escape-Sequenz angesehen werden, oder?

Mithrandir 16. Dez 2009 10:04

Re: C++ und WritePrivateProfileString was mach ich falsch?
 
Nope, so passt es schon. :) Ich habs analog umgesetzt aus einem Beispiel von Microsoft. So stehts da auch. :)

Quark, du hast natürlich recht.... :wall:

Ich könnte mir vorstellen, dass das vielleicht auch der Grund ist, warums gescheitert ist. Ich habe im Beispiel jetzt Doppelslashs gesetzt.

R2009 16. Dez 2009 11:41

Re: C++ und WritePrivateProfileString was mach ich falsch?
 
Hi alle,

es scheint zu funktionieren:
Delphi-Quellcode:
extern "C" __declspec( dllexport ) int QtTestINI()
{
    int r;
    //r = WritePrivateProfileString((WCHAR*)"test",(WCHAR*)"EinPfad",(WCHAR*)"huhu",(WCHAR*)"D:\\tester.ini");
    r = WritePrivateProfileString(TEXT("common"), TEXT("EinPfad"), TEXT("huhu"), TEXT("c:\\test.ini"));
    return(r);
}
Ursache für das Ganze ist der \\ im Dateinamen. Ohne diese geht das Ganze schief.
Bei der Variante mit (WCHAR*) legt er zwar das File an schreibt aber keinen Inhalt rein.
Interssant ist, dass er bei beiden Varianten eine 1 zurück gibt.
Das heisst also die Funktion meint alles korrekt gemacht zu haben.

Grüsse
Rainer

R2009 16. Dez 2009 12:39

Re: C++ und WritePrivateProfileString was mach ich falsch?
 
Hi alle,
könnte mir noch jemand erklären wie ich eine Variablenübergabe hinbekomme:

extern "C" __declspec( dllexport ) int QtTestINI_write(char bla[255])
{
int r;
r = WritePrivateProfileString(bla, TEXT("EinPfad"), TEXT("huhu"), TEXT("c:\\test.ini"));
return(r);
}

bla soll übergeben werden. Der Compiler meckert aber dass er den Datentyp nicht konvertieren kann.

(Ich weiss dass ich eigentlich einen neuen Thread aufmachen müsste aber vielleicht weiss jemand die Antwort)

Grüsse
rainer

Daniel 16. Dez 2009 14:05

Re: C++ und WritePrivateProfileString was mach ich falsch?
 
--- Drei Beiträge entfernt. Der persönliche Disput wird jetzt nicht zum fünften Male offen in der DP ausgetragen. --- :roll:

R2009 17. Dez 2009 05:40

Re: C++ und WritePrivateProfileString was mach ich falsch?
 
Hi Daniel,

schliesse bitte diesen Thread. Ich habe das Problem in einen eigenen Thread ausgelagert.

Grüsse
Rainer


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:15 Uhr.

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