Autor Beitrag
sam07
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 27.05.08 09:42 
Hallo,

ich habe ein Form Designer C# und möchte Eigenschaften von Controls und Forms in INI Files speichern..das ganze soll bei zum Beispiel mehrere Textboxes so in INI File gespeichert werden:

[Form1]
'TextBoxdata = Fett;Font;Fettschrift;HintergrundFarbe;Transparent|(nächste TextBoxdata(Fett;Font;....))|...
'TextBoxPos = x-position;y-position;breite;höhe|(nächste TextBoxPos)|...
'TextBoxName = Name;;;1;|Name;;;2;|....

ich werde denkbar wenn jemand da mir helfen kann

danke sam07


Moderiert von user profile iconChristian S.: Topic aus WinForms verschoben am Di 27.05.2008 um 10:21
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 27.05.08 10:23 
Hallo und :welcome:!

Mal abgesehen davon, dass ini-Dateien nicht mehr wirklich Stand der Technik sind: Wo liegt denn nun Dein Problem, wo kommst Du nicht weiter?

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
sam07 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 27.05.08 10:56 
Titel: Eigenschaften in INI files speichern C#
also habe ich angefangen mit DLL´s zu importieren,


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
[DllImport("kernel32")]
        private static extern long WritePrivateProfileString(
            string section,
            string key,
            string val,
            string filePath);

        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(
            string section,
            string key,
            string def,
            StringBuilder retVal,
            int size,
            string filePath);


Und mit dieser Funktion ..


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
public static string getentryline(string section, string entry, string standard, string file)
        {
            int result;
            int chars = 50000;
            StringBuilder buffer = new StringBuilder(chars);

            result = GetPrivateProfileString(section, entry, standard, buffer, chars, file);

            return buffer.ToString();
        }

und ich weisse nicht wie es weiter gehen soll..

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 27.05.08 11:06 
Bevor ich mich mit P/Invoke herumschlagen müsste, würde ich doch wirklich lieber ein von Haus aus unterstütztes Format wie XML benutzen :| . Wenn du sowieso nur einen Objektbaum 1:1 in eine Datei übertragen willst, bist du mit XML quasi schon fertig: F1 -> "XML-Serialisierung".
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Di 27.05.08 11:07 
Bitte entscheide Dich, ob Du die Diskussion hier oder im Entwickler-Forum fortführen willst. Dann werde ich weitere Hinweise geben.

DLLs zu importieren, ist auf jeden Fall kein sinnvoller Weg. Das NET Framework bietet so viele Möglichkeiten, Dateien zu lesen, zu speichern und zu verarbeiten, dass Du diese benutzen solltest. Einige habe ich Dir im Entwickler-Forum genannt.

Jürgen
sam07 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 27.05.08 11:24 
ja ich weisse mit "XML Serialisierung" ist einfacher, das habe ich schon realisiert, aber mein Chef will unbedingt, dass ich die Datenspeicherung mit diesen blöden Ini Files realisiere...
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 27.05.08 11:28 
Okay, muss man akzeptieren.

Und nun hast Du Quellcode, zum lesen und schreiben von Werten in Ini-Dateien. Wo ist jetzt der Punkt, wo Du nicht weiter kommst? :-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
sam07 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 27.05.08 12:07 
der Punkt ist, dass ich nicht weisse wie ich die ganze Properties von mehrere Controls der selber Art in einer Linie mit '|' und ';' realisiere.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Di 27.05.08 12:37 
Will Dein Chef wirklich auch, dass die gleiche Art von Eigenschaften zusammengefasst werden soll? Kannst Du ihn nicht wenigstens dazu bewegen, dass in einer Zeile genau ein Control steht?

Benutze, wie schon gesagt, String.Format und String.Split.
Meine Empfehlung:
ausblenden Quelltext
1:
2:
//  Name = Typ; Left; Top; Width; Height usw.
Nachname_Textbox=TextBox;100;50;200;24

So zusammensetzen:
ausblenden C#-Quelltext
1:
2:
3:
4:
TextBox box = Nachname_Textbox;
string singleTerm = String.Format("{0}={1};{2};{3};{4};{5}",
    box.Name, box.GetType().Name,
    box.Left, box.Top, box.Width, box.Height);

So aufteilen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
string singleTerm = ...
int i0 = singleTerm.IndexOf('=');
string name = singleTerm.Substring(0,i0);
string[] terms = singleTerm.Substring(i0+1).Split(';');
TextBox box = new TextBox();
box.Name = name;
box.Left = int.Parse(terms[1]);

Wenn Dein Chef sich dazu nicht bewegen lässt, kannst Du in gleicher Weise die von mir vorgeschlagenen Methoden benutzen. Du musst dann die einzelnen Abschnitte zusätzlich zusammenfügen. Schau Dir dazu auch - wie ebenfalls schon vorgeschlagen - String.Join und StringBuilder an.

Jürgen

PS. Merkst Du, dass Fragen in mehreren Foren unfreundlich sind? Hast Du gelesen, dass ich im Entwickler-Forum schon passende Antworten gegeben habe?
sam07 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 27.05.08 13:53 
erst mal danke schön für deine Hilfe und Bemühungen..und entschuldigung ich habe nicht gewusst das ist mit Fragen in mehreren Foren unfreundlich ist..also ich bin neu im Bereich C#..und war blockiert.
also wie ich das verstanden habe werde ich dieses DlL´s und diese Funktion mit getentryline nicht brauchen oder..