
lempy
Mitglieder-
Gesamte Inhalte
90 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von lempy
-
Hallo Leute, Ich muss spätestens am 5. Februar meinen Projektantrag abgegeben haben und ich habe da so ein paar Fragen oder vielmehr bin Unsicher ob das reicht. Auftrag: In einem Labor (Reinraum genannt) soll ich einige PC und Laptopps rausschmeissen. Letztendlich soll davon nur noch einer und ein Drucker überig bleiben. Das heißt, ich muss schauen welcher Rechner bleibt. Problem ist: Von Windows XP bis Windows 10 Enterpreise ist alles an Betriebssysem vorhanden. Die Rechner sind Uralt bis etwas neuer. Dazu gibt es Laborgeräte, die nur noch mit dem einem verbliebenen Recher bedient werden sollen. Eins dieser Geräte ist aber nur mit Windows XP bereit seinen Dienst zu tun. Kassen sind leer. Wird auf mindestens eine Virtualisierung herauslaufen. Wie diese aussieht wird erst durch Try and Error entschieden, da ich noch nicht weiss welcher Rechner überrig bleibt. Ob der Drucker tatsächlich im Raum bleibt ist auch noch offen. Das ist erst mal ein grober Auszug des Antrages. (Projetbeschreibung noch nicht fertig) Vielleicht könnt ihr mir aus dem groben Umriss Passagen nennen die so übernehmen kann. Hier ist die Ausarbeitung des PROJEKTUMFELDES Projektumfeld: --- ENTFERNT --- Es wäre nett, wenn ich mal darüber schaut und mitteilt, ob das so OK ist. Lieben Dank lempy
-
Wow, das sind tolle Hilfen zur Projektfindung. Da wird sich sicherlich etwas als "Anlehnung" finden, damit meine ich eine eigene Ideenfindung. Hoffe dass meine Mails an das Oberhaupt der IT in meinem Betrieb sich meldet und ich dann entlich mal einen Einblick bekomme. Gestern ist der DHCP-Server abgeschmiert und heute Morgen habe ich dann erfahren, dass einer der Oberbosse in meinem Standort einfach unserem RODC-Server kurz das Leben ausgehaucht hat, idem er den Stecker zog. Wie bei einem Router. Konnte noch nicht einmal ein Ticket zur IT-Abteilung senden oder sonst irgendwas machen. Da macht auch das Praktikum keinen Spass, wenn man überhaupt keine Berechtigungen hat. Gruß Lempy
-
Sollte man meinen. Aber ohne irgend eine Berechtigung ist das schon schwierig. Heute z. B. ist der Druckerserver ausgefallen und Mails konnten auch nicht mehr mit outlook versand werden. Ohne Berechtigung, auch nur in irgendeinem dieser Netze was nachzusehen oder so ist das schon schwierig. Mein Vortänzer ist diese Woche im Urlaub. Der hat nur minimale Berechtigungen. Wie soll da ein Projekt entstehen? Mein ober Guru meinte nur: "Jetzt nich in Panik kommen, mein Ausbilder wird sich bei mir melden." Der hat sich bis jetzt noch nicht gemeldet. Werde meine Vortänzer nächste Woche mal fragen, ob wir da nicht was machen können. Da ich nicht im Netzwerk noch nicht mal eine Berechtigung zum "Lesen" habe, und alles in einem anderen Standort gemacht wird, lässt sich da schlecht ein Projekt finden. Vor Allem soll es ja auch noch anspruchsvoll sein. Das heißt, nicht mal eben Skype for Businis installieren und ein paar Kabel an den richtigen Platz stecken. Das währe dass, was ich als Projekt machen könnte. Anspruchsvoll ist doch etwas anders, oder? liebe Grüße lempy
-
Ich habe ein ähnliches Problem. Allerdings mache ich mein Praktikum in einer Institution auf Länderebene. Vater Staat. IT-Basis, Netzwerk und Administration liegen nicht in meinem Standort und ich habe keine Rechte. Kann ohne meinen Vortänzer garnichts in dem Bereicht machen. Selbst mein Vortänzer hat sehr eingeschrängte Rechte. Wie soll ich da ein Abschlussprojekt finden? Alles was in Bereich FISI läuft wird ausserhalb meines Standortes erledigt. Tolle Wurst. Hab mich schon mit meinen Ausbildungsleiter des Bildungsinstitutes gewandt. Praktikumswechsel sieht scheisse aus zur Zeit mit Corana. Und Region gibt es sehr wenige IT-Firmen. Habt ihr einen Rat für mich? Auf meine Heimrechner kann mindestens fünf visuelle Maschnen laufen lassen, aber eine Idee für ein Projekt will mir da nicht kommen. Es sollte ja was Anspruchvolles, das mit Vorbereitung, Ausführung und Dokumentation 35 Stunden einnimmt passen. Anmeldung für das Projekt ist schon im Januar 2021 lieben Dank für Eure Anrgungen lempy
-
Hey Leute Recht lieben Dank für Eure Hilfe!!!!☺️ Habe die Formeln letztendlich im IT-Handbuch gefunden. Nein, ist nur die Geschichte, dass ich schon ein etwas fortgeschrittenes Alter habe und wir die Grundlagen nur in 9 Tagen durchackern. Dazu kommt in dieser Woche das Einrichten von Virtuellen Rechnern und das drum herum. Bischen viel Stoff, der da durchrattert. Als Metallbauerin musste ich mich ein wenig mit Spannung, Stromstärken usw. abquälen, aber das ist bei mir über 30 Jahre her. Mit der Zeit hat sich soviel Schrott im Oberstübchen angesammelt, dass man diese Synapsen nicht sofort wieder findet. Trotzdem Lieben Dank.
-
Hallo Leute, Mach seit Juni 2019 eine Umschulung zur Fachinformatikerin Systemintegration. War heute recht Frustriert, weil unser Dozent Das Thema IT Grundlagen und Window und Linux hat. Der Sche...t uns mit seinen Vorträgen sowas von zu und stellt danach Übungsaufgaben rein. In seinen Vorträgen geht es mir zu tief in die Thematik, denn das Thema sind Grundlagen. In seinen Aufgaben soll ich dann Plötzlich aus einer angegebenen Zahl die aus einer SATA Festplatte kommt die Speicherkapazität errechnen. Irgenwie hat wohl mal was in der Richtung erwähnt was Stunden her war aber ich vorweg noch keine einzige Formel im Vorfeld zu sehen bekommen aus der ich schließen könnte, wie ich diese Aufgaben angehen könnte. Im IT-Handbuch von Westermann habe ich solche Formeln auch finden können. Frage ist, wo finde ich eine Formelsammlung, die auch solche Speicherberechnungen aufführt. Ach ja, Rechnungen mit mA an und Wie viele Geräte man an diesen Anschluss angeschlossen werden können währen auch gut. Glaube nicht, das das in die Grundlagen gehört. Lieben Dank für Eure Antworten
-
Habe im Juni eine Umschulung zur Fachinformatikerin Systemintegration begonnen.
-
Hallo Leute es geht noch mal um mein Pong-Spiel. Also: Wenn ich das Spiel starte, dann soll der Radiobutton 640 * 480 markiert sein andererseits soll man aber die Spielfeldgröße ändern können und dann der jeweilig ausgewählte Radiobutton markiert sein. Mein Problem ist, das ich das beides für sich gesehen hinbekomme, aber nicht beides zusammen. In dieser Methode oder auch Funktion läuft alles zusammen, das heißt hier werden die Änderungen für das Spielfeld ausgeführt. Sie ist in meiner Hauptforma (Form1) zu finden. private: System::Void spielfeldToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { Point neueGroesse; // bitte jeweils in einer Zeile eingeben einstellungenDialog4 ^neueWerte = gcnew einstellungenDialog4(this->Width, this->Height, this->rahmenFarbe,this->malen); // wenn der Dialog über OK beendet wird if (neueWerte -> ShowDialog() == Windows::Forms::DialogResult::OK) { // die neue Größe holen neueGroesse = neueWerte -> liefereWert(); spielfeld->BackColor = neueWerte->liefereBackColor(); rahmenFarbe = neueWerte->liefereRahmenColor(); // den Dialog wieder schließen neueWerte -> Close(); // das Formular ändern this -> Width = neueGroesse.X; this -> Height = neueGroesse.Y; // neu ausrichten // bitte jeweils in einer Zeile eingeben this -> Left = (Screen::PrimaryScreen -> Bounds.Width - this -> Width) / 2; this -> Top = (Screen::PrimaryScreen -> Bounds.Height - this -> Height) / 2; // die Zeichenfläche neu beschaffen zeichenflaeche = spielfeld -> CreateGraphics(); // das Spielfeld neu setzen setzeSpielfeld(); // Spielfeld löschen zeichenflaeche -> Clear(spielfeld -> BackColor); zeichneSpielfeld(); zeichnePunkte("0"); zeichneZeit("0"); // und einen neuen Ball und Schläger zeichnen neuerBall(); } }; }; } Hier her werden alle Änderungen übergeben. Hier mal mein gesamter Code für die Einstellungen. #pragma once using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; namespace Pong { /// <summary> /// Zusammenfassung für EinstellungDialog /// /// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch /// die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern, /// das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt. /// Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen /// arbeiten, die diesem Formular zugewiesen sind. /// </summary> public ref class einstellungenDialog4 : public System::Windows::Forms::Form { public: einstellungenDialog4(Int32 breite, Int32 hoehe, Color rahmen, Color malen) { InitializeComponent(); // //TODO: Konstruktorcode hier hinzufügen. // linie = 6; pinsel1 = gcnew SolidBrush(Color::White); malflaeche = panelVorschau->CreateGraphics(); panelVorschau->BackColor = Color::Black; panelBallvorschau->BackColor = Color::White; panelSchlaegervorschau->BackColor = Color::White; rahmenFarbe = rahmen; setzeVorschau(); //if(breite == 320 && hoehe == 200) //{ // radioButton320->Checked = true; //} //else if(breite == 640 && hoehe == 480) //{ // radioButton640->Checked = true; //} //else if(breite == 1024 && hoehe == 768) //{ // radioButton1024->Checked = true; //} //else //{ // radioButtonMaximal->Checked = true; //} } protected: /// <summary> /// Verwendete Ressourcen bereinigen. /// </summary> ~einstellungenDialog4() { if (components) { delete components; } } public: // die Methode liefert die ausgewählten Werte zurück Point liefereWert() { Point rueckgabe; if (radioButton320 -> Checked == true) rueckgabe = Point(320,200); if (radioButton640 -> Checked == true) rueckgabe = Point(640,480); if (radioButton1024 -> Checked == true) rueckgabe = Point(1024,760); if (radioButtonMaximal -> Checked == true) // bitte in einer Zeile eingeben rueckgabe = Point(Screen::PrimaryScreen -> Bounds.Width, Screen::PrimaryScreen -> Bounds.Height); return rueckgabe; } Void setzeVorschau() { vorschauGroesse = panelVorschau->ClientRectangle; vorschauMaxX = vorschauGroesse.Right - linie; vorschauMinX = vorschauGroesse.Left + linie + 1; vorschauMaxY = vorschauGroesse.Bottom - linie; vorschauMinY = vorschauGroesse.Top + linie; } Void maleVorschau() { malflaeche->FillRectangle(pinsel1, 0, 0, vorschauMaxX, linie); malflaeche->FillRectangle(pinsel1, vorschauMaxX, 0, linie, vorschauMaxY + linie); malflaeche->FillRectangle(pinsel1, 0, vorschauMaxY, vorschauMaxX, linie); malflaeche->FillRectangle(pinsel1, 0,0, linie, vorschauMaxX); } Color liefereBackColor() { return colorDialog1->Color; } Color liefereRahmenColor() { return rahmenFarbe; } private: Graphics ^malflaeche; SolidBrush ^pinsel1; Rectangle vorschauGroesse; Int32 linie, vorschauMaxX, vorschauMaxY, vorschauMinX, vorschauMinY; Color rahmenFarbe; Color malen; private: System::Windows::Forms::GroupBox^ groupBox1; private: System::Windows::Forms::Button^ buttonUebernehmen; private: System::Windows::Forms::Button^ buttonAbbrechen; private: System::Windows::Forms::RadioButton^ radioButtonMaximal; private: System::Windows::Forms::RadioButton^ radioButton1024; private: System::Windows::Forms::RadioButton^ radioButton640; private: System::Windows::Forms::RadioButton^ radioButton320; private: System::Windows::Forms::GroupBox^ farbeinstellung; private: System::Windows::Forms::Label^ labelHintergrund; private: System::Windows::Forms::Button^ buttonRahmen; private: System::Windows::Forms::Button^ buttonHintergrund; private: System::Windows::Forms::Label^ labelRahmenfarbe; private: System::Windows::Forms::ColorDialog^ colorDialog1; private: System::Windows::Forms::Panel^ panelVorschau; private: System::Windows::Forms::Panel^ panelSchlaegervorschau; private: System::Windows::Forms::Panel^ panelBallvorschau; protected: private: /// <summary> /// Erforderliche Designervariable. /// </summary> System::ComponentModel::Container ^components; #pragma region Windows Form Designer generated code /// <summary> /// Erforderliche Methode für die Designerunterstützung. /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. /// </summary> void InitializeComponent(void) { this->groupBox1 = (gcnew System::Windows::Forms::GroupBox()); this->radioButtonMaximal = (gcnew System::Windows::Forms::RadioButton()); this->radioButton1024 = (gcnew System::Windows::Forms::RadioButton()); this->radioButton640 = (gcnew System::Windows::Forms::RadioButton()); this->radioButton320 = (gcnew System::Windows::Forms::RadioButton()); this->buttonUebernehmen = (gcnew System::Windows::Forms::Button()); this->buttonAbbrechen = (gcnew System::Windows::Forms::Button()); this->farbeinstellung = (gcnew System::Windows::Forms::GroupBox()); this->buttonRahmen = (gcnew System::Windows::Forms::Button()); this->buttonHintergrund = (gcnew System::Windows::Forms::Button()); this->labelRahmenfarbe = (gcnew System::Windows::Forms::Label()); this->labelHintergrund = (gcnew System::Windows::Forms::Label()); this->colorDialog1 = (gcnew System::Windows::Forms::ColorDialog()); this->panelVorschau = (gcnew System::Windows::Forms::Panel()); this->panelSchlaegervorschau = (gcnew System::Windows::Forms::Panel()); this->panelBallvorschau = (gcnew System::Windows::Forms::Panel()); this->groupBox1->SuspendLayout(); this->farbeinstellung->SuspendLayout(); this->panelVorschau->SuspendLayout(); this->SuspendLayout(); // // groupBox1 // this->groupBox1->Controls->Add(this->radioButtonMaximal); this->groupBox1->Controls->Add(this->radioButton1024); this->groupBox1->Controls->Add(this->radioButton640); this->groupBox1->Controls->Add(this->radioButton320); this->groupBox1->Location = System::Drawing::Point(12, 12); this->groupBox1->Name = L"groupBox1"; this->groupBox1->Size = System::Drawing::Size(323, 80); this->groupBox1->TabIndex = 0; this->groupBox1->TabStop = false; this->groupBox1->Text = L"Größe"; // // radioButtonMaximal // this->radioButtonMaximal->AutoSize = true; this->radioButtonMaximal->Location = System::Drawing::Point(253, 32); this->radioButtonMaximal->Name = L"radioButtonMaximal"; this->radioButtonMaximal->Size = System::Drawing::Size(63, 17); this->radioButtonMaximal->TabIndex = 3; this->radioButtonMaximal->TabStop = true; this->radioButtonMaximal->Text = L"Maximal"; this->radioButtonMaximal->UseVisualStyleBackColor = true; // // radioButton1024 // this->radioButton1024->AutoSize = true; this->radioButton1024->Location = System::Drawing::Point(170, 32); this->radioButton1024->Name = L"radioButton1024"; this->radioButton1024->Size = System::Drawing::Size(77, 17); this->radioButton1024->TabIndex = 2; this->radioButton1024->Text = L"1024 * 768"; this->radioButton1024->UseVisualStyleBackColor = true; // // radioButton640 // this->radioButton640->AutoSize = true; this->radioButton640->Checked = true; this->radioButton640->Location = System::Drawing::Point(93, 32); this->radioButton640->Name = L"radioButton640"; this->radioButton640->Size = System::Drawing::Size(71, 17); this->radioButton640->TabIndex = 1; this->radioButton640->TabStop = true; this->radioButton640->Text = L"640 * 480"; this->radioButton640->UseVisualStyleBackColor = true; // // radioButton320 // this->radioButton320->AutoSize = true; this->radioButton320->Location = System::Drawing::Point(16, 32); this->radioButton320->Name = L"radioButton320"; this->radioButton320->Size = System::Drawing::Size(71, 17); this->radioButton320->TabIndex = 0; this->radioButton320->Text = L"320 * 200"; this->radioButton320->UseVisualStyleBackColor = true; // // buttonUebernehmen // this->buttonUebernehmen->DialogResult = System::Windows::Forms::DialogResult::OK; this->buttonUebernehmen->Location = System::Drawing::Point(12, 330); this->buttonUebernehmen->Name = L"buttonUebernehmen"; this->buttonUebernehmen->Size = System::Drawing::Size(75, 23); this->buttonUebernehmen->TabIndex = 1; this->buttonUebernehmen->Text = L"Übernehmen"; this->buttonUebernehmen->UseVisualStyleBackColor = true; // // buttonAbbrechen // this->buttonAbbrechen->Location = System::Drawing::Point(260, 330); this->buttonAbbrechen->Name = L"buttonAbbrechen"; this->buttonAbbrechen->Size = System::Drawing::Size(75, 23); this->buttonAbbrechen->TabIndex = 2; this->buttonAbbrechen->Text = L"Abbrechen"; this->buttonAbbrechen->UseVisualStyleBackColor = true; this->buttonAbbrechen->Click += gcnew System::EventHandler(this, &einstellungenDialog4::buttonAbbrechen_Click); // // farbeinstellung // this->farbeinstellung->Controls->Add(this->buttonRahmen); this->farbeinstellung->Controls->Add(this->buttonHintergrund); this->farbeinstellung->Controls->Add(this->labelRahmenfarbe); this->farbeinstellung->Controls->Add(this->labelHintergrund); this->farbeinstellung->Location = System::Drawing::Point(12, 98); this->farbeinstellung->Name = L"farbeinstellung"; this->farbeinstellung->Size = System::Drawing::Size(323, 94); this->farbeinstellung->TabIndex = 3; this->farbeinstellung->TabStop = false; this->farbeinstellung->Text = L"Farbeinstellung"; // // buttonRahmen // this->buttonRahmen->Location = System::Drawing::Point(150, 57); this->buttonRahmen->Name = L"buttonRahmen"; this->buttonRahmen->Size = System::Drawing::Size(25, 25); this->buttonRahmen->TabIndex = 3; this->buttonRahmen->Text = L". . ."; this->buttonRahmen->UseVisualStyleBackColor = true; this->buttonRahmen->Click += gcnew System::EventHandler(this, &einstellungenDialog4::buttonRahmen_Click); // // buttonHintergrund // this->buttonHintergrund->Location = System::Drawing::Point(150, 22); this->buttonHintergrund->Name = L"buttonHintergrund"; this->buttonHintergrund->Size = System::Drawing::Size(25, 25); this->buttonHintergrund->TabIndex = 2; this->buttonHintergrund->Text = L". . ."; this->buttonHintergrund->UseVisualStyleBackColor = true; this->buttonHintergrund->Click += gcnew System::EventHandler(this, &einstellungenDialog4::buttonHintergrund_Click); // // labelRahmenfarbe // this->labelRahmenfarbe->AutoSize = true; this->labelRahmenfarbe->Location = System::Drawing::Point(13, 69); this->labelRahmenfarbe->Name = L"labelRahmenfarbe"; this->labelRahmenfarbe->Size = System::Drawing::Size(71, 13); this->labelRahmenfarbe->TabIndex = 1; this->labelRahmenfarbe->Text = L"Rahmenfarbe"; // // labelHintergrund // this->labelHintergrund->AutoSize = true; this->labelHintergrund->Location = System::Drawing::Point(13, 34); this->labelHintergrund->Name = L"labelHintergrund"; this->labelHintergrund->Size = System::Drawing::Size(100, 13); this->labelHintergrund->TabIndex = 0; this->labelHintergrund->Text = L"Spielfeldhintergrund"; // // panelVorschau // this->panelVorschau->BorderStyle = System::Windows::Forms::BorderStyle::FixedSingle; this->panelVorschau->Controls->Add(this->panelSchlaegervorschau); this->panelVorschau->Controls->Add(this->panelBallvorschau); this->panelVorschau->Location = System::Drawing::Point(12, 198); this->panelVorschau->Name = L"panelVorschau"; this->panelVorschau->Size = System::Drawing::Size(323, 124); this->panelVorschau->TabIndex = 4; this->panelVorschau->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &einstellungenDialog4::panelVorschau_Paint); // // panelSchlaegervorschau // this->panelSchlaegervorschau->Location = System::Drawing::Point(18, 35); this->panelSchlaegervorschau->Name = L"panelSchlaegervorschau"; this->panelSchlaegervorschau->Size = System::Drawing::Size(6, 30); this->panelSchlaegervorschau->TabIndex = 1; // // panelBallvorschau // this->panelBallvorschau->Location = System::Drawing::Point(185, 58); this->panelBallvorschau->Name = L"panelBallvorschau"; this->panelBallvorschau->Size = System::Drawing::Size(6, 6); this->panelBallvorschau->TabIndex = 0; // // einstellungenDialog3 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(353, 365); this->Controls->Add(this->panelVorschau); this->Controls->Add(this->farbeinstellung); this->Controls->Add(this->buttonAbbrechen); this->Controls->Add(this->buttonUebernehmen); this->Controls->Add(this->groupBox1); this->Name = L"einstellungenDialog3"; this->StartPosition = System::Windows::Forms::FormStartPosition::CenterParent; this->Text = L"Einstellungen"; this->TopMost = true; this->groupBox1->ResumeLayout(false); this->groupBox1->PerformLayout(); this->farbeinstellung->ResumeLayout(false); this->farbeinstellung->PerformLayout(); this->panelVorschau->ResumeLayout(false); this->ResumeLayout(false); } #pragma endregion private: System::Void buttonAbbrechen_Click(System::Object^ sender, System::EventArgs^ e) { Close(); } private: System::Void panelVorschau_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { maleVorschau(); } private: System::Void buttonHintergrund_Click(System::Object^ sender, System::EventArgs^ e) { if(colorDialog1->ShowDialog() == Windows::Forms::DialogResult::OK) { panelVorschau->BackColor = colorDialog1->Color; } } private: System::Void buttonRahmen_Click(System::Object^ sender, System::EventArgs^ e) { ColorDialog ^cd = gcnew ColorDialog(); if(cd->ShowDialog() == Windows::Forms::DialogResult::OK) { rahmenFarbe = cd->Color; pinsel1->Color = rahmenFarbe; panelBallvorschau->BackColor = rahmenFarbe; panelSchlaegervorschau->BackColor = rahmenFarbe; maleVorschau(); } } }; } Mein Problem: Mit dem auskommentierten Teil funktioniert zwar die Auswahl der Größe und es wird der richtige Radiobutton als vorausgewählt markiert, weil ich den ja in den Eigenschaften festgelegt habe, aber wenn ich dieses Formular noch einmal öffne, ist nicht der Radiobutton markiert, den man ausgewählt hat sondern immer noch der festgelegte Radiobutton 640 * 480. Ist der Code aber aktiv, dann wird mir zu Anfang der Maximal Radiobutten markiert und die Auswahl funktioniert. Das heißt es wird die Größe übernommen und auch der richtige Radiobutton beim wieder Öffnen des Einstellungendialogs. Wie kann ich das hinbekommen, das trotzdem der Radiobutton 640 * 480 am Anfang markiert ist und nicht Maximal trotz des aktiven Codes, den ich jetzt erstmal auskommentiert habe? Ach so: Es handelt sich um C++/Cli (Forms obwohl !!!!!) Lieben Dank für Eure Hilfe lempy
-
Hallo Klotzkopp Nach Deiner Aussage währe dann der vollständige ursprüngliche Dateiname z. B. test.rft? Aufgabenstellung sagt ausdrücklich beim Öffnen. Warum auch immer? Kopieren erfolgt dann mit: File->Copy(Name original Pfad, Name des original Pfades + eventuell Ordner Archiv, true wenn Vorhanden dann überschreiben) Erst mal so ohne mich weiter damit eingehender beschäftigt zu haben. Dabei denke ich an "openDialog->FileName", mit dem ich ja meine Datei auswähle. Währe nett, wenn Du mir eventuell die richtige Übersetzung "Codesyntax ins Deutsche" dazu erläutern kannst, wenn meine oben genannte nicht korrekt ist. Lieben Dank lempy
-
Hallo Klotzkopp Habe eben ein wenig mit Deinem Hinweis gebastelt, aber funktioniert nicht. Hier mal meine Versuche. Irgendwas verstehe ich da nicht. /*richTextBox1->SaveFile(dateiname + ".bak");*/ richTextBox1->SaveFile(Path::GetFileNameWithoutExtension(dateiname+".bak")); /*kopie = Path::GetFileNameWithoutExtension(dateiname)+".bak";*/ /*kopie = Path::GetFileName(openFileDialog1->FileName);*/ /* SaveFile(kopie);*/ Die mit "openDialog" geöffnete original Datei soll auch im Original erhalten bleiben und zusätzlich soll eine .bak-Datei gespeichert werden. Entweder im Selben Ordner oder in einem Archiv im selben Ordner. Mit meiner Anweisung : richTextBox1->SaveFile(dateiname + ".bak"); habe ich wenigstens die zweite Datei. Diese heißt dann aber z.B. test.rtf.bak und nicht test.bak. Die Hilfe, Anweisung was auch immer es ist liest sich einfach und ist so ja verständlich, aber das Umsetzen in einen funktionierenden Code ist irgendwie was geheimnisvolles. Eine "automatische" Sicherung einer Datei kann doch nicht so viel schwieriger sein als das einfache Speichern? Lieben Dank für Deine Hilfe lempy
-
Hallo Leute Habe schon mal ein solches Thema erstellt, ist aber schon länger her. Mein Problem ist, das ich eine Sicherungsdatei von einer anderen Datei beim Öffnen erstellen möchte. So soll Z. B. oder test.txt oder test.rtf test.bak werden. Habe es bis jetzt geschafft, dass ich die Endung .bak an die Datei angehängt bekomme, aber die Endung .txt oder .rtf bleibt erhalten. In meinem Code sind so einige Versuche auskommentiert, nur damit ihr so eine Ahnung habt in welche Richtungen ich meine Gehversuche gemacht habe. private: System::Void openFileDialog1_FileOk(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e) { String ^kopie; // den Namen setzen dateiname = openFileDialog1->FileName; /*kopie = openFileDialog1->FileName;*/ this->Text = dateiname; // die Datei laden richTextBox1->LoadFile(dateiname); /*kopie = dateiname;*/ /*kopie = openFileDialog1->FileName->Remove(openFileDialog1->FileName->Length - (gcnew FileInfo(openFileDialog1->FileName))->Extension->Length) + ".bak";*/ /* kopie = Path::Combine(Path::GetDirectoryName(dateiname), Path::GetFileNameWithoutExtension(dateiname) + L".BAK");*/ /* richTextBox1->SaveFile(dateiname->Replace('.rtf','.bak'));*/ richTextBox1->SaveFile(dateiname + ".bak"); // die Eigenschaft Modified zur Sicherheit auf false setzen richTextBox1->Modified = false; } Dabei wäre "Replace()" ja nach den Beschreibungen bei MSDN und den mir zur Verfügung stehenden Büchern die beste Lösung, aber ich habe keine Ahnung wie ich diese richtig einsetze. Außerdem soll eine schon bestehende .bak-Datei überschrieben werden. Das währe eine Boolsche-Anweisung. Nur wie füge ich diese ein? Das will ich aber erst nach dem Kopieren in angriff nehmen. Wie bekomme ich es hin, das ich die Endung meiner "Original Datei" von .txt odeer .rtf in .bak beim neuen Speichern beim Öffnen ändern kann? Bin für jeden Hinweis und Hilfe dankbar. Lieber Gruß lempy
-
Hallo Pointerman "Quelldatei an Zieldatei" übergeben. Meine Quelldatei habe ich schon in einen Ordner. Also der Name Text.doc ist schon vergeben und diese Datei möchte z. B. zum Bearbeiten öffnen. Beim Öffnen soll eine weitere Datei entstehen, die den selben Inhalt hat wie meine Text.doc bevor ich meine Änderungen vorgenommen habe. Diese Datei soll dann aber als Text.bak in z. B. einen anderen Ordner "gesichert" werden. Quelle = Text.doc, Ziel = Text.bak in ? Ordner. Die "Variable" Dateinamen bezieht sich auf Text.doc aber aus dem doc soll ein .bak werden. Da fehlt mir die Idee wie ich das anstellen. Wie trennen ich die Endung ab? Zu Repac3r MSDN ist sehr gut, aber auch nur wenn man nicht wie ich Anfänger ist und das ganze in seiner engbemessenen Freizeit macht. Vieles verwirrt einen Anfänger nur. Das sind die meisten Artikel, die sich mit C++/CLI und Forms beschäftigen. Ich brauche eher so eine Hilfe wie " ... für Dummys". Es ist nicht immer leicht den Einstieg wieder ordentlich zu finden. Zu SilentDemise: Na ja, ist so mein ding. Ich denke oft über tausend Ecken und daher viel zu kompliziert. Aber es hilft mir auch dabei Dinge von anderen Seiten zu betrachten. Auf jeden Fall werde ich mir Eure Stichworte notieren und danach Recherche betreiben. Melde mich danach. Lieber Gruß lempy
-
Hallo Leute Ich habe einen kleinen Texteditor erstellt und möchte nun die Dateien, die ich mit dem"openFileDialog" öffne beim öffnen in eine .BAK-Datei Sichern oder Kopieren. Dabei soll der Name der Datei beibehalten werden und nur die Endung sich ändern. Aus Text.doc z. B. wird dann Text.bak. Falls es schon eine Sicherungskopie von dieser Datei gibt, dann soll sie überschrieben werden. Wenn ich das richtig sehe ist eine "BAK-Datei" immer eine Sicherungskopie einer Datei. Also müsste meine Methode ungefähr so heißen: Void Copy(String ^Quelldatei, String ^zieldatei, bool ueberschreiben) Quelldatei ist dabei meine Text.doc und Zieldatei Text.bak das Überschreiben bewirkt dann die Bool-Anweisung in der überprüft wird ob es die Datei Text.bak schon gibt. Das ganze Kopieren der Datei müsste dann in der Methode "Void openFileDialog1_FileOK" aufgerufen werden und zwar nach dem Laden der Datei. Hier meine eigene Methode zum kopieren der Datei: Void sicherungsKopie(String ^dateiname, String ^kopie, Boolean ^ueberschreiben) { dateiname = openFileDialog1->FileName; kopie = dateiname; // kopie erhält den Namen der Datei kopie = (dateiname,"C:\\Users\\dag\\Desktop\\test\\Archiv\\*.bak"); // ? ueberschreiben = // ? File::Copy(dateiname, kopie ); } Meine "FileoK"-Methode: private: System::Void openFileDialog1_FileOk(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e) { // den Namen setzen dateiname = openFileDialog1->FileName; this->Text = dateiname; // die Datei laden richTextBox1->LoadFile(dateiname); [B]Hier müsste ich dann meine Kopiermethode aufrufen[/B] // die Eigenschaft Modified zur Sicherheit auf false setzen richTextBox1->Modified = false; } Ich komme einfach auf keine Idee, wie ich den Namen der Quelldatei an die Zieldatei übergebe und dann noch mit der Endung .bak versehe. Die Abfrage, ob die Bak-Datei vorhanden ist denke ich mal wird so aussehen können.: if(IO::File::Exists(kopie)) { überschreibe ??? Lieben Dank für Eure Hilfe lempy
-
Hey Super!!! Klappt jetzt. Hatte so was ähnliches an der falschen Stelle gehabt, hat natürlich dann nicht funktioniert. Hab dabei aber nicht an die Items gedacht. Recht lieben Dank lempy
-
Hallo Leute Bin gerade dabei ein Programm zu schreiben, dass Einträge in einer TextBox in eine Listbox übergibt und anschließend den Inhalt der Listbox in eine XML Datei speichert. Das Schreiben in die TextBox und das Übernehmen in die Listbox mittels eines Buttons funktioniert. Der Inhalt in der Listbox soll dann über einen Button in einer XML Datei gespeichert (geschrieben) werden. Und genau da liegt der Hase im Pfeffer begraben. Er listet mir zwar die Anzahl der Einträge auf, aber er schreibt nicht meine Einträge in den "Text" Tag. So sieht meine XML Datei aus: <?xml version="1.0" encoding="UTF-8"?> -<eintraege> -<eintrag> <text>System.Windows.Forms.ListBox+ObjectCollection</text> </eintrag> -<eintrag> <text>System.Windows.Forms.ListBox+ObjectCollection</text> </eintrag> -<eintrag> <text>System.Windows.Forms.ListBox+ObjectCollection</text> </eintrag> </eintraege Was ist da schief gelaufen? Keine Ahnung. Das ist mein Code: #pragma once namespace aufgabe3 { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; using namespace System::Xml; /// <summary> /// Zusammenfassung für Form1 /// /// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch /// die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern, /// das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt. /// Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen /// arbeiten, die diesem Formular zugewiesen sind. /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public: // Eigene Attributte // Für den Dateiname String ^xmlDateiname; Form1(void) { InitializeComponent(); // //TODO: Konstruktorcode hier hinzufügen. // // setzen des Dateinamens xmlDateiname = IO::Path::ChangeExtension(Application::ExecutablePath,".xml"); } protected: /// <summary> /// Verwendete Ressourcen bereinigen. /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::ListBox^ listBox1; protected: private: System::Windows::Forms::TextBox^ textBox1; private: System::Windows::Forms::Button^ buttonUebernehmen; private: System::Windows::Forms::Button^ buttonSpeichern; private: /// <summary> /// Erforderliche Designervariable. /// </summary> System::ComponentModel::Container ^components; #pragma region Windows Form Designer generated code /// <summary> /// Erforderliche Methode für die Designerunterstützung. /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. /// </summary> void InitializeComponent(void) { this->listBox1 = (gcnew System::Windows::Forms::ListBox()); this->textBox1 = (gcnew System::Windows::Forms::TextBox()); this->buttonUebernehmen = (gcnew System::Windows::Forms::Button()); this->buttonSpeichern = (gcnew System::Windows::Forms::Button()); this->SuspendLayout(); // // listBox1 // this->listBox1->FormattingEnabled = true; this->listBox1->Location = System::Drawing::Point(12, 12); this->listBox1->Name = L"listBox1"; this->listBox1->Size = System::Drawing::Size(144, 225); this->listBox1->Sorted = true; this->listBox1->TabIndex = 0; // // textBox1 // this->textBox1->Location = System::Drawing::Point(172, 12); this->textBox1->Name = L"textBox1"; this->textBox1->Size = System::Drawing::Size(119, 20); this->textBox1->TabIndex = 1; // // buttonUebernehmen // this->buttonUebernehmen->Location = System::Drawing::Point(172, 69); this->buttonUebernehmen->Name = L"buttonUebernehmen"; this->buttonUebernehmen->Size = System::Drawing::Size(119, 23); this->buttonUebernehmen->TabIndex = 2; this->buttonUebernehmen->Text = L"Eintrag Übernehmen"; this->buttonUebernehmen->UseVisualStyleBackColor = true; this->buttonUebernehmen->Click += gcnew System::EventHandler(this, &Form1::buttonUebernehmen_Click); // // buttonSpeichern // this->buttonSpeichern->Location = System::Drawing::Point(172, 107); this->buttonSpeichern->Name = L"buttonSpeichern"; this->buttonSpeichern->Size = System::Drawing::Size(119, 23); this->buttonSpeichern->TabIndex = 3; this->buttonSpeichern->Text = L"Liste Speichern"; this->buttonSpeichern->UseVisualStyleBackColor = true; this->buttonSpeichern->Click += gcnew System::EventHandler(this, &Form1::buttonSpeichern_Click); // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(297, 261); this->Controls->Add(this->buttonSpeichern); this->Controls->Add(this->buttonUebernehmen); this->Controls->Add(this->textBox1); this->Controls->Add(this->listBox1); this->Name = L"Form1"; this->Text = L"Form1"; this->ResumeLayout(false); this->PerformLayout(); } #pragma endregion private: System::Void buttonUebernehmen_Click(System::Object^ sender, System::EventArgs^ e) { listBox1->Items->Add(Convert::ToString(textBox1->Text)); } private: System::Void buttonSpeichern_Click(System::Object^ sender, System::EventArgs^ e) { // die Einstellungen setzen XmlWriterSettings ^einstellungen = gcnew XmlWriterSettings; einstellungen->Indent = true; xmlDateiname = "liste.xml"; // Die Datei erzeugen XmlWriter ^xmlSchreiben = XmlWriter::Create(xmlDateiname, einstellungen); xmlSchreiben->WriteStartDocument(); // Die Wurzel schreiben xmlSchreiben->WriteStartElement("eintraege"); for (Int32 i = 0; i < listBox1->Items->Count; i++) { // den Knoten eintrag erzeugen xmlSchreiben->WriteStartElement("eintrag"); // die Einträge schreiben xmlSchreiben->WriteElementString("text",listBox1->Items->ToString()); // den Knoten abschließen xmlSchreiben->WriteEndElement(); } xmlSchreiben->WriteEndDocument(); xmlSchreiben->Close(); } }; } Lieben Dank für Eure Hilfe lempy
-
Hallo :upps Ich denke mal wieder viel zu kompliziert. Ist aber auch eine Herausforderung das ding so hin zu bekommen. Ok, mir fällt jetzt nur ein: Übung macht den Meister. Auf einen oder mehrere Versuche kommt es an. Habe ja im Moment Zeit dafür, denn ich werde erst wieder die Aufgaben einsenden, wenn ich 1. die Knete dazu habe und 2. auch erst dann, wenn die restlichen Hefte durch sind, damit es nicht ganz so teuer wird. Kommt also auf ein oder zwei Monate nicht an. Es kann ja immer noch was anderes dazwischen kommen. War mir nicht wirklich klar. Hatte zwar kurz daran Gedacht, aber wieder verworfen. Die Methode müsse ja dann die Anweisungen für die Ausgabe im dritten Listenfeld haben. Denke ich zu mindesten. Also die ganze Anweisung aus private: System::Void listBox2_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) muss in eine eigene Methode geschrieben werden, die dann in "System::Void listBox2_SelectetIndesChanged()" aufgerufen wird. In dieser Methode bräuchte ich dann ein Handle, in dem ich die Ergebnisse für die Unterschlüssel speichere und einen Handle in dem die Einträge gespeichert werden. Das ist jetzt mal so mein erster Gedanke dazu. Bin mir aber nicht sicher, ob ich mit den bis jetzt verwendeten Anweisungen zum Auslesen der Registry auskomme. Versuchen wir einen neuen Test "Auslesen der Registry" oder so. Wird ein wenig dauern, bis ich dazu das erste Ergebnis einstelle, muss die Gedanken erst mal sortieren. Vielleicht hast Du noch einen Tipp Lieben Dank für Deinen Rat und Deine Tat. Gruß lempy
-
Hallo Klotzkopp Ich verstehe diesen Satz so: Im dritten Listenfeld sollen alle Unterschlüssel und alle Einträge angezeigt werden. Also Sowohl als auch. Ich denke da an einen rekursiven Aufruf der Ausgabeanweisung, aber bin im Moment noch am grübeln wie diese aussehen muss. Die Ausgabe müsste sich solange aufrufen, bis es wirklich keinen Unterschlüssel (Unterordner) mehr gibt sondern nur noch die Einträge. Da ich nicht weiß, aus wie vielen Unterschlüsseln ein Unterschlüssel besteht, bis er zu den Einträgen gelangt ist ja eine Anzahl von X Aufrufen. Ich weiß also nicht, wie ich diese Bedingung in einer FOR oder WHILE-Schleife formulieren muss. Hier mal ein gedanklicher Versuch mit while: while(SchluessleListe2 != nulljptr) { for each (String ^eintrag in SchluesselListe2->GetSubKeyNames()) listBox3->Items->Add(eintrag); /*for each (String ^eintrag in SchluesselListe3->GetSubKeyNames()) listBox3->Items->Add(eintrag);*/ for each (String ^eintrag in SchluesselListe2->GetValueNames()) listBox3->Items->Add(eintrag + " = " + Convert::ToString(SchluesselListe-> GetValue(eintrag))); } Dies scheint jedoch eher eine Endlosschleife zu sein. Vielleicht kannst Du mir dabei noch ein paar Hinweise geben. Lieben Dank lempy
-
Hallo Klotzkopp Danke Dir erst mal für Deine Hilfe. Habe mir Deine Version mal in einen Test kopiert und getestet. Habe da noch ein paar Fragen, doch erst muss ich da wieder reinkommen. Die letzten Tage waren bei mir Stress pur. Sohn samt Familie wieder vorübergehend bei uns eingezogen, die bessere Hälfte nach einer Routine OP fas über den Jordan gegangen usw. Muss mich erst noch sortieren. 1. Warum funktioniert die Ausgabe in der zweiten Listbox mit einem Array? private: System::Void listBox1_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) { listBox2->Items->Clear(); RegistryKey ^SchluesselListe = Registry::CurrentUser; array <String^> ^UnterListe; UnterListe = SchluesselListe->OpenSubKey(listBox1->SelectedItem->ToString())->GetSubKeyNames(); for each (String ^eintrag in UnterListe) listBox2->Items->Add(eintrag); } 2. Warum meckert der Compiler dabei bei der dritten Listbox? Sinn gemäß kann er den SubKeyNames() nicht in Array öffnen. 3. Wie gestalte ich einen Rekursiven Aufruf, wenn ich die Anzahl nicht kenne? " for (i = ?; i > 0; i++) " Die "Rekursion zählt oder ruft sich solange auf, bis das Ergebnis 0 ist. Um die Aufgabe richtig zu lösen muss ich auch die "Unterordner" oder vielmehr die "Unterschlüssel" anzeigen und dann erst die Werte der Unterschlüssel. Wie in einem Dateibaum. Das ganze müsste ja, wenn ich richtig denke zur Laufzeit also dynamisch passieren. Auslesen der vorhandenen, mir nicht bekannten Unterschlüssel, ausgeben dieser Unterschlüssel und dann die jeweiligen Werte. Lieben Dank für Diene Hilfe lempy
-
Hallo Klotzkopp Lieben Dank erst mal für Deine schnelle Antwort. Wird einen kleinen Moment dauern, den im Grunde habe ich in diesem Heft drei Aufgaben zu bewältigen. Aber zu erst die ERSTE: Ändern Sie die Listenanzeige für die Registrierung aus dem Studienheft so, dass der Anwender selbst auswählen kann, welche Schlüssel bzw. Einträge im zweiten und dritten Listenfeld angezeigt werden. Im ersten Listenfeld sollen immer fest die Einträge aus dem Schlüssel HKEY_URRENT_USER angezeigt werden. Achten Sie darauf, dass die Einträge im zweiten bzw. dritten Listenfeld nur dann angezeigt werden sollen, wenn im ersten bzw. zweiten Listenfeld ein Eintrag markiert ist. Damit die Lösung nicht zu aufwendig wird, sollen im zweiten Listenfeld immer nur die untergeordneten Schlüssel angezeigt werden. Im dritten Listenfeld dagegen sollen sowohl eventuell vorhandene Unterschlüssel als auch die Einträge angezeigt werden. Hinweis: Bitte beachten Sie Für einige Unterschlüssel im Schlüssel HKEY_CURRENT_USER - wie z.B. Console - gibt es nicht in jedem Fall weitere untergeordnete Schlüssel. Hier befinden sich auf der zweiten Ebene bereits Einträge. Es kann also durchaus sein, dass bei dem einen oder anderen Schlüssel das zweite Listenfeld leer bleibt. Das ist die Aufgabe für die praktische Übung. Die theoretische Ausarbeitung kann ja erst dann wirklich erfolgen, wenn man weis Wieso, Weshalb und Warum. Hat man das verstanden, dann ist die Theorie nur ein Klacks. Vorschau auf die zweite Aufgabe: Es sollen die Methoden schreibeEintstellungen() und leseEinstellungen in meinem Pong-Spiel so geändert werden, dass die Einstellungen der Schwierigkeit und der Spielfeldgröße in die Registry geschrieben (abgelegt) werden. Aufgabe drei bezieht sich auf XML Dateien. Ich hoffe das hat Dir ein wenig mehr geholfen, damit Due mir helfen kannst. Kann gut sein, dass ich wieder den Wals vor lauter Bäume nicht sehen. Ich selber weiß, dass ich oft zu kompliziert denke. Lieben, lieben Dank lempy
-
Hallo Kloztkopp Salopp aus dem Gedächtnis heraus sage ich jetzt mal dieses: Rekursion = Der "immer wieder kehrende eigene Aufruf" der Funktion/Methode? Entschuldige das Fragezeichen, aber ich bin ein wenig unsicher ob das so richtig ist. Funktionen/Methoden haben wir schon erstellt, doch jetzt im Bezug auf die Registry bin sehr verunsichert, weil man sich dieses wichtige "Windowstool?" schnell zerschießen kann und dann nichts mehr läuft. Nach Deinem Tipp müsste ich mir eine Funktion basteln in der es Rekursion gibt und diese dann im "Hauptprogramm" ausgeben? Diese Funktion/Methode müsste dann aber auch mit den "Schlüsseln" arbeiten. Oder nicht? Da fällt mir die Anweisung "GetValueKind" ein. Das was ich bisher darüber weiß ist, dass die Anweisung im Grunde die Unterschlüssel auflisten müsste, weil ich denke das diese Unterschlüssel "Kinder" des darüber liegenden Schlüssels sind. Oder habe ich das falsch Interpretiert? In meinen Heften finde ich nichts darüber! Ist es wichtig für die Ausgabe der Werte anzugeben ob es binäre oder strings sind? Gibt es eventuell eine Seite, auf der man diese ganzen "Bearbeitungsschlüssel" wie SetSubKey unw. etwas einfacher aufgelistet findet und wo die Erklärungen eher für Anfänger verständlich sind? Mit dem "GetValueKind" kommt am Ende bei des Auswahl in der Zeiten Box ein "Systemabsturz" Werde mich inzwischen noch mal mit Funktionen/Methoden und der Rekursion beschäftigen und schauen ob ich das mit der Registry umsetzen kann. Lieben Dank lempy
-
Hallo Klotzkopp Hier noch einmal mein ganzer Code. Wie schon vorher erwähnt, habe ich noch die letzten beiden "Listboxen" dazu erstellt, um zu sehen welches das bessere Ergebnis bringt. #pragma once namespace Registrytest2 { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; using namespace Microsoft::Win32; /// <summary> /// Zusammenfassung für Form1 /// /// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch /// die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern, /// das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt. /// Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen /// arbeiten, die diesem Formular zugewiesen sind. /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: Konstruktorcode hier hinzufügen. // } protected: /// <summary> /// Verwendete Ressourcen bereinigen. /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::ListBox^ listBox1; protected: private: System::Windows::Forms::ListBox^ listBox2; private: System::Windows::Forms::TreeView^ treeView1; private: System::Windows::Forms::Button^ buttonEinlesen; private: System::Windows::Forms::ListView^ listView1; private: System::Windows::Forms::ListBox^ listBox3; private: /// <summary> /// Erforderliche Designervariable. /// </summary> System::ComponentModel::Container ^components; #pragma region Windows Form Designer generated code /// <summary> /// Erforderliche Methode für die Designerunterstützung. /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. /// </summary> void InitializeComponent(void) { this->listBox1 = (gcnew System::Windows::Forms::ListBox()); this->listBox2 = (gcnew System::Windows::Forms::ListBox()); this->treeView1 = (gcnew System::Windows::Forms::TreeView()); this->buttonEinlesen = (gcnew System::Windows::Forms::Button()); this->listView1 = (gcnew System::Windows::Forms::ListView()); this->listBox3 = (gcnew System::Windows::Forms::ListBox()); this->SuspendLayout(); // // listBox1 // this->listBox1->FormattingEnabled = true; this->listBox1->Location = System::Drawing::Point(12, 7); this->listBox1->Name = L"listBox1"; this->listBox1->Size = System::Drawing::Size(138, 329); this->listBox1->TabIndex = 0; this->listBox1->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::listBox1_SelectedIndexChanged); // // listBox2 // this->listBox2->FormattingEnabled = true; this->listBox2->Location = System::Drawing::Point(156, 7); this->listBox2->Name = L"listBox2"; this->listBox2->Size = System::Drawing::Size(195, 329); this->listBox2->TabIndex = 1; this->listBox2->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::listBox2_SelectedIndexChanged); // // treeView1 // this->treeView1->Location = System::Drawing::Point(576, 7); this->treeView1->Name = L"treeView1"; this->treeView1->Size = System::Drawing::Size(208, 329); this->treeView1->TabIndex = 2; // // buttonEinlesen // this->buttonEinlesen->Location = System::Drawing::Point(322, 386); this->buttonEinlesen->Name = L"buttonEinlesen"; this->buttonEinlesen->Size = System::Drawing::Size(75, 23); this->buttonEinlesen->TabIndex = 3; this->buttonEinlesen->Text = L"Einlesen"; this->buttonEinlesen->UseVisualStyleBackColor = true; this->buttonEinlesen->Click += gcnew System::EventHandler(this, &Form1::buttonEinlesen_Click); // // listView1 // this->listView1->Location = System::Drawing::Point(790, 7); this->listView1->Name = L"listView1"; this->listView1->Size = System::Drawing::Size(292, 329); this->listView1->TabIndex = 4; this->listView1->UseCompatibleStateImageBehavior = false; // // listBox3 // this->listBox3->FormattingEnabled = true; this->listBox3->Location = System::Drawing::Point(357, 7); this->listBox3->Name = L"listBox3"; this->listBox3->Size = System::Drawing::Size(213, 329); this->listBox3->TabIndex = 5; // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(1110, 434); this->Controls->Add(this->listBox3); this->Controls->Add(this->listView1); this->Controls->Add(this->buttonEinlesen); this->Controls->Add(this->treeView1); this->Controls->Add(this->listBox2); this->Controls->Add(this->listBox1); this->Name = L"Form1"; this->Text = L"Form1"; this->ResumeLayout(false); } #pragma endregion private: System::Void buttonEinlesen_Click(System::Object^ sender, System::EventArgs^ e) { // ein Array mit Zeichenketten für die Schlüssel array <String^> ^regSchluesselListe; // ein Array mit Zeichenketten für die Einträge /* array <String^> ^regEintragListe;*/ // einen Handle für die Klasse RegistryKey /*RegistryKey ^regSchluessel;*/ // den Inhalt der drei Listenfelder löschen listBox1->Items->Clear(); listBox2->Items->Clear(); /*listBox3->Items->Clear();*/ // die Schlüssel aus HKEY_CURRENT_USER holen // bitte in einer Zeile eingeben regSchluesselListe = Registry::CurrentUser->GetSubKeyNames(); // und in das erse Listenfeld eintragen for each (String ^eintrag in regSchluesselListe) listBox1->Items->Add(eintrag); // den Schlüssel Software öffnen // bitte in einer Zeile eingeben /*regSchluessel = Registry::CurrentUser->OpenSubKey("Software");*/ /*regSchluesselListe = regSchluessel->OpenSubKey(listBox1->SelectedItem->ToString())->GetSubKeyNames();*/ if(listBox1->SelectedIndex == -1) { listBox1->SelectedIndex = 0; } /*if(listBox1->SelectedIndex != 0) {*/ // und jetzt alle Unterschlüssel für Software lesen /*regSchluesselListe = regSchluessel->OpenSubKey(listBox1->SelectedItem->ToString())->GetSubKeyNames();*/ // in das zweite Listenfeld eintragen /*for each (String ^eintrag in regSchluesselListe) listBox2->Items->Add(eintrag);*/ /* }*/ /*}*/ // den Schlüssel \ Software \ Microsoft \ VCExpress \ 10.0 öffnen /* regSchluessel = Registry::CurrentUser->OpenSubKey("Software\\Microsoft\\VCExpress\\10.0");*/ // und nun die eigentlichen Einträge lesen /* regEintragListe = regSchluessel->GetValueNames();*/ // die Namen und die Werte in das dritte Listenfeld eintragen //for each (String ^eintrag in regEintragListe) // // bitte in einer Zeile eingeben // listBox3->Items->Add(eintrag + " = " + Convert::ToString(regSchluessel->GetValue(eintrag))); } private: System::Void listBox1_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) { listBox2->Items->Clear(); RegistryKey ^SchluesselListe = Registry::CurrentUser; array <String^> ^UnterListe; UnterListe = SchluesselListe->OpenSubKey(listBox1->SelectedItem->ToString())->GetSubKeyNames(); for each (String ^eintrag in UnterListe) listBox2->Items->Add(eintrag); } private: System::Void listBox2_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) { treeView1->Nodes->Clear(); listView1->Items->Clear(); RegistryKey ^SchluesselListe = Registry::CurrentUser; array <String^> ^EintragListe; EintragListe = SchluesselListe->OpenSubKey(listBox1->SelectedItem->ToString()) ->OpenSubKey(listBox2->SelectedItem->ToString())->GetSubKeyNames(); /*EintragListe = SchluesselListe->OpenSubTree(listBox2->SelectedItem->ToString())->GetSubKeyNames();*/ /*EintragListe = SchluesselListe->GetValueNames();*/ /*for(Int32 i = 0; i < SchluesselListe->Lenght; i++) {*/ /* for each (String ^eintrag in EintragListe) listBox3->Items->Add(eintrag);*/ /*for each (String ^eintrag in EintragListe) listBox3->Items->Add(eintrag + "Wert" + " = " + Convert::ToString(SchluesselListe->GetValue(eintrag)));*/ for each (String ^eintrag in EintragListe) listBox3->Items->Add(eintrag + "Wert" + " = " + Convert::ToString(SchluesselListe->GetSubKeyNames())); /*SchluesselListe = Registry::CurrentUser->GetSubKeyNames();*/ /*EintragListe = SchluesselListe->GetSubKeyNames();*/ /*for each (String ^eintrag in EintragListe) treeView1->Nodes->Add(eintrag);*/ for each (String ^eintrag in EintragListe) treeView1->Nodes->Add(eintrag + "Wert" + " = " + Convert::ToString(SchluesselListe->GetSubKeyNames())); /*for each (String ^eintrag in EintragListe) treeView1->Nodes->Add(eintrag + "Wert" + " = " + Convert::ToString(SchluesselListe->GetSubKeyNames()));*/ /*}*/ /*for each (String ^eintrag in EintragListe) listView1->Items->Add(eintrag);*/ /*for each (String ^eintrag in EintragListe) listView1->Items->Add(eintrag);*/ for each (String ^eintrag in EintragListe) listView1->Items->Add(eintrag + "Wert" + " = " + Convert::ToString(SchluesselListe->GetValue(eintrag))); } }; } Lieber Gruß lempy
-
Hallo Klotzkopp ich noch mal. Habe das ganze mal mit "TreeView" und "listView" versucht, aber leider nicht den gewünschten Erfolg erzielt. Sind die beiden neu eingefügten "Listboxen". Wie man sieht, werden die Werte nicht angezeigt und auch die "Unterordner" vielmehr Unterschlüssel auch nicht. Denke ich zumindest. Habe von der Registry in dem Sinne null Ahnung. Ich weiß nur, dass schon der erste Eintrag in meinem Beispiel schon mehrere Unterschlüssel hat. Aber auch nur deshalb, weil ich mir das ganze mal in der "regedit.exe" angesehen habe. In den Übungsaufgaben haben wir in den Registrierungsschlüssel HKEY-Current-USER zwar eigene Einträge gemacht und ausgelesen, aber da haben wir den Pfad explizit angegeben. Jetzt sollen wir einen Schlüssel des Hauptschlüssel bis auf die "Wurzel" auslesen. Von oben angefangen sämtliche Unterschlüssel anzeigen und zum Schluss die eingetragenen Werte. Z. B. Farbe = gün oder so. Wir haben dazu auch keinen weiteren Key-Methoden erhalten außer den Hinweis auf die MSDN Library im Netz, die einem Anfänger wie mir nun wirklich nicht hilfreich ist sondern eher noch mehr verwirrt. Lieben Dank für Eure Hilfe lempy
-
Hallo Klotzkopp Gibt es denn so was? Mag für Dich das einfachste der Welt zu sein, aber ich bisher nur das schreiben in die Registry, löschen und das Anzeigen mit einem bekannten Pfad gefunden. Die Library auf der MSN Seite ist auch nicht wirklich hilfreich für einen Anfänger und Bücher geben eben nur "OpenSubKey", "CreatSubKey" und so her. Richtig tief, das auch Anfänger damit etwas anfangen können geht das alles nicht. Hatte schon beim in der Registry schreiben ein ungutes Gefühl, aber es hat Gott sei Dank ohne Probleme geklappt. Vielleicht kannst Du mir sagen wie diese Methode für das Erstellen eines Baumes für die Registry heißt oder worauf diese TreeControl zurück geht? Lieben Dank lemyp
-
Hallo Klotzkopp Die Unterschlüssel und dann die Einträge. Quasi eine Baumstruktur wie im Explorer währe schöne, wenn machbar. Gruß lempy
-
Hallo Leute Stehe mal wieder vor einem Problem!! Ich habe eine C++/CLI Forms - Anwendung, mit der ich die Einträge in der Registry auslesen möchte. In der linken Listbox sind die Unterschlüssel des Hauptschlüssels HKEY_CURRENT_USER fest vorgegeben. In der mittleren Listbox werden die Unterschlüssel angezeigt, die sich hinter den ausgewählten Unterschlüssel der linken Listbox befinden. Soweit ist alles OK. In der letzten rechten Lisbox allerdings möchte ich gerne erreichen, dass die Unterschlüssel und deren Unterschlüssel angezeigt werden und dann die Einträge. Hier ein Screen, der noch nicht so funktioniert aber schon fas in die Richtung geht. Wie man sieht werden keine Unterschlüssel aufgelistet und die Werte sind alle leer. Das heißt die Werte werden nicht angezeigt. Hier der Code, der die Anzeige in der letzten Listbox ausgibt. private: System::Void listBox2_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) { listBox3->Items->Clear(); RegistryKey ^SchluesselListe = Registry::CurrentUser; array <String^> ^EintragListe; EintragListe = SchluesselListe->OpenSubKey(listBox1->SelectedItem->ToString()) ->OpenSubKey(listBox2->SelectedItem->ToString())->GetSubKeyNames(); /*EintragListe = SchluesselListe->GetValueNames();*/ for each (String ^eintrag in EintragListe) listBox3->Items->Add(eintrag); /* EintragListe = SchluesselListe->OpenSubKey(listBox1->SelectedItem->ToString()) ->OpenSubKey(listBox2->SelectedItem->ToString())->GetSubKeyNames();*/ /*array <String^> ^WertNamen;*/ /*for each (String ^eintrag in EintragListe) listBox3->Items->Add(eintrag);*/ for each (String ^eintrag in EintragListe) listBox3->Items->Add(eintrag + "Wert" + " = " + Convert::ToString(SchluesselListe->GetValue(eintrag))); /*for each (String ^eintrag in EintragListe) listBox3->Items->Add("Wert: " + eintrag + " (" + SchluesselListe->GetValueKind(eintrag)::Convert::ToString + ")");*/ //GetValueKind ließt den Typ des Werts aus /*for each (String^ eintrag in WertNamen) listBox3->Items->Add("Wert: " + eintrag + " (" + SchluesselListe->GetValueKind(eintrag).ToString () + ")");*/ } Freue mich über jeden Hinweis und jede Hilfe Lieben Dank lempy