standart programm für Dateien Manipulieren.



  • Was hast du denn gemacht? Weißt du was Deklaration und Definition bedeutet?
    http://tutorial.schornboeck.net/funktionen2.htm
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-61231.html
    PS.
    Standard schreibt sich mit d am Ende.



  • Braunstein schrieb:

    Was hast du denn gemacht? Weißt du was Deklaration und Definition bedeutet?
    http://tutorial.schornboeck.net/funktionen2.htm
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-61231.html
    PS.
    Standard schreibt sich mit d am Ende.

    Was Deklaration und Definition ist weiß ich schon, aber wie man das macht hab ich keine ahnung. Ich kenn mich auch nicht wirklich in C++ aus. Ich hab nur so ein Buch für jugendliche gelesen.

    Zuerst hatte ich es hier mit versucht:
    bool CreateFileAssociation(AnsiString slExtension,
    AnsiString slDescription,
    AnsiString slExeFile,
    AnsiString slIconFile,
    int ilIconIndex,
    bool blRegPrintCmd)

    das kam mir richtig vor, aber es hat nicht den effekt gebracht den ich mir gewünscht habe.

    Deine Links bringen mich auch nicht weiter.

    Mit anderen Worten: Ich hab keine ahnung und bin verzweifelt 😞



  • Die Links sollten dich aber weiterbringen.
    Also

    // in eine cpp z.Bsp.  FileAss.cpp
    bool CreateFileAssociation(AnsiString slExtension,
                               AnsiString slDescription,
                               AnsiString slExeFile,
                               AnsiString slIconFile,
                               int        ilIconIndex,
                               bool       blRegPrintCmd)
    {
      // Falls kein Punkt vor der Erweiterung, Punkt hinzufügen:
      if(slExtension != EmptyStr && slExtension[1] != '.')
        slExtension = "." + slExtension;
      else if(slExtension == EmptyStr) return false;
    
      // Falls keinen Namen der ausführbaren Datei übergeben,
      // den Namen der Exe-Datei verwenden:
      if(slExeFile == EmptyStr) slExeFile = ParamStr(0);
    
      // Falls keinen Namen der Symboldatei übergeben,
      // Symbol der Exe-Datei verwenden:
      if(slIconFile == EmptyStr)
      {
        ilIconIndex = 0;
        slIconFile = ParamStr(0);
      }
    
      // Registry-Schlüssel anlegen:
      TRegistry* pReg = new TRegistry;
      try
      {
        pReg->RootKey = HKEY_CLASSES_ROOT;
    
        // Dateinamenserweiterunsschlüssel erzeugen:
        pReg->OpenKey(slExtension, true);
        pReg->WriteString("", slDescription);
        pReg->OpenKey("\\" + slDescription, true);
        pReg->WriteString("", slDescription);
    
        // Assoziation für das Öffnen der Dateien erzeugen:
        pReg->OpenKey("\\"+slDescription+"\\shell\\open\\command", true);
        pReg->WriteString("", slExeFile + " %1");
    
        // Assoziation für das Drucken der Dateien erzeugen:
        if(blRegPrintCmd)
        {
          pReg->OpenKey("\\"+slDescription+"\\shell\\print\\command", true);
          pReg->WriteString("", slExeFile + " /p %1");
        }
        // Symbol zuweisen:
        pReg->OpenKey("\\"+slDescription+"\\DefaultIcon", true);
        pReg->WriteString("", slIconFile + "," + IntToStr(ilIconIndex));
      }
      catch (...)
      {
        delete pReg;
        return false;
      }
      delete pReg;
      return true;
    }
    
    // in die dazugehörige Headerdatei (FileAss.h)
    bool CreateFileAssociation(AnsiString slExtension, AnsiString slDescription,
                               AnsiString slExeFile,   AnsiString slIconFile,
                               int        ilIconIndex, bool blRegPrintCmd);
    

    Wenn du diese Headerdatei (FileAss.h) dann in dein Projekt einbindest, alles zusammen compilierst, dann sollte es gehen.



  • ich will mich ja nicht unbeliebt machen, aber das klappt nicht so ganz.
    Ich erhalte folgende Fehlermeldungen:
    undefined symbole 'TRegistry'.
    undefined symbole 'pReg'.
    Type name expected
    Statement missing ;.
    Operand of 'delete' must be non-const pointer.
    Operand of 'delete' must be non-const pointer.

    Ich nehme an irgendwie muss ich TRegistry und pReg auch Deklarieren(oder wie man sagt)...lieg ich da richtig? Wenn ja, wäre nett wenn du mir das erklärst.
    Wie gesagt hab ich keine ahnung...hätte ich die, müsste ich hier ja nicht um hilfe bitten _



  • Du mußt nur registry.hpp mit einbinden

    #include <registry.hpp>
    

    Ein Blick in die BCB-Hilfe zu TRegistry schadet auch nicht.



  • Braunstein schrieb:

    Du mußt nur registry.hpp mit einbinden

    #include <registry.hpp>
    

    Ein Blick in die BCB-Hilfe zu TRegistry schadet auch nicht.

    Danke, jetzt klappts so halbwegs. Nun startet schon mein Programm, wenn ich ne html-datei öffne, allerdings wird der Text nicht im Textfeld angezeigt. Und ich wollte diese Funktion nicht für den eintrag "Öffnen" haben sondern für "Bearbeiten".

    Ich finds toll das du bis jetzt noch nicht die geduld verloren hast und hoffe das bleibt so _

    PS: Jedesmal wenn ich hier frage erzählt man mir ich soll nen blick in die BCB-Hilfe werfen, aber nie steht da für mich was hilfreiches drine. In diesem Fall steht über TRegistry überhaupt nichts drin.





  • Hallo

    Dein Problem besteht nur, weil du den FAQ-Beistrag, den ich gepostet habe, nicht mal gelesen hast.

    bis bald
    akari



  • Jansen schrieb:

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39300.html

    also eigentlich war mir das was da erklärt wurde schon klar, aber da durch ist mir die Hilfe trotzdem nicht hilfreicher.

    akari schrieb:

    Hallo

    Dein Problem besteht nur, weil du den FAQ-Beistrag, den ich gepostet habe, nicht mal gelesen hast.

    bis bald
    akari

    Ich hab ihn gelesen und als ich deine letzte nachricht gelesen habe, hab ich den FAQ-Beitrag noch ein zweites mal gelesen. Aber ich kann damit nichts anfangen. warscheinlich hab ich nicht genug ahnung.

    Und wenn ich die hilfe hier nicht annehmen wollte, so wie du sagst, dann hätte ich gar nicht erst gefragt. leuchtet doch ein oder? _



  • Das leuchtet nicht notwendigerweise ein. Bis jetzt sieht es eher so aus, als ob du auf eine fixfertige Lösung hoffst, und das ist hier nicht gern gesehen.

    Dass du dich in den maximal 24 Minuten zwischen meinem Beitrag und deiner Antwort ernsthaft sowohl mit der Hilfe-zur-Hilfe als auch nochmal mit dem FAQ-Beitrag von akari auseinandergesetzt hast, scheint doch mehr als zweifelhaft.
    Allein das Durchlesen von Code-Beispielen wird dir nicht viel bringen. Ausprobieren, ändern, wieder ausprobieren, Auswirkungen beobachten, Funktionsweise verstehen: so lernt man.



  • Jansen schrieb:

    Das leuchtet nicht notwendigerweise ein. Bis jetzt sieht es eher so aus, als ob du auf eine fixfertige Lösung hoffst, und das ist hier nicht gern gesehen.

    Dass du dich in den maximal 24 Minuten zwischen meinem Beitrag und deiner Antwort ernsthaft sowohl mit der Hilfe-zur-Hilfe als auch nochmal mit dem FAQ-Beitrag von akari auseinandergesetzt hast, scheint doch mehr als zweifelhaft.
    Allein das Durchlesen von Code-Beispielen wird dir nicht viel bringen. Ausprobieren, ändern, wieder ausprobieren, Auswirkungen beobachten, Funktionsweise verstehen: so lernt man.

    Das stimmt schon, aber wenn man nun keine idee hat und nur solche bescheidenen kenntnisse aus einem Buch für totale Amateure hat, wie ich, bringt es auch nichts wenn man nur mit irgendwelchem Fachchinesisch zugelavert wird oder ganz einfach gesagt wird "Guck in die Hilfe". Jeder hat mal klein angefangen und nicht jeder hat es Studiert oder so. Und trozdem möchte man auch mal was neues lernen. Und dann bleibt einem nur:
    1. Noch eins dieser völlig überteuerten Bücher zu kaufen, bei dem man dann aber nicht sicher ist, ob man darin auch das liest was man wissen möchte oder sogar die hälfte darin mit dem identisch ist was man schon hat.
    2. man fragt in nem Forum nach. Dann bringt es aber nichts wenn alle nur ellenlange texte schreiben die man nur versteht wenn man das alles schon beherrscht. Genauso wenig bringen auch fertige Quelltexte, da man sich die Zusammenhänge dann auch nicht wirklich zusammen reimen kann. Ein richtige hilfe wäre der Quelltext mit ner Erklärung die auch anfänger verstehen.

    Und richtig fies ist es, wenn man noch beschuldigt wird, das man die hilfe nicht annimmt. Nur weil ich nicht schlau genug bin das was man mir erklärt zu verstehen heißt das noch lange nicht, das ich undankbar bin.

    Und es leuchtet auf jedenfall ein. Wer ist den so blöde ne frage zu stellen wenn er die Antwort nicht hören will.



  • Hallo

    Das Prinzip "Datei mit Programm verknüpfen" besteht aus zwei Teilen. Der eine Teil ist, Windows zu sagen das eine bestimmte Dateiart mit deinem Programm geöffnet werden soll. Wie das eingerichtet wird, steht in dem CodeSnipptes-Beitrag.
    Doch Windows weiß ja gar nicht was dein Programm mit der Datei machen soll, und schon gar nicht das irgendein Teil davon in irgendein Control zu laden ist. Sondern genau den Teil muß nun dein Programm selber noch machen. Dafür bekommt das Programm den Dateinamen als Parameter. Deshalb findest du in dem FAQ-Beitrag den Zugriff auf die Eigenschaft ParamStr[1], wo genau der Dateiname (wenn vorhanden) übergeben wird. Was das Programm nun mit dem Dateinamen tun soll, mußt du aber noch selber reinprogrammieren. Ich hoffe nun ist dir der Sinn klar.

    bis bald
    akari



  • @ akari

    Vielen Vielen Dank!! _
    Zusammen mit deiner letzten erklärung und den FAQ Beitrag hab ich es jetzt hinbekommen.


Anmelden zum Antworten