Jump to content

lempy

Mitglieder
  • Gesamte Inhalte

    64
  • Benutzer seit

  • Letzter Besuch

Über lempy

  • Rang
    Reg.-Benutzer

Letzte Besucher des Profils

Der "Letzte Profil-Besucher"-Block ist deaktiviert und wird anderen Benutzern nicht angezeit.

  1. 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.
  2. 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
  3. Habe im Juni eine Umschulung zur Fachinformatikerin Systemintegration begonnen. 

     

  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. lempy

    Registry in Listbox auslesen

    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
  13. lempy

    Registry in Listbox auslesen

    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
  14. lempy

    Registry in Listbox auslesen

    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
  15. lempy

    Registry in Listbox auslesen

    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

Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung