eigenes Dateiformat



  • Hallo!

    wenn ich in eine datei was speichern will, was nur von meinem programm wieder gelesen werden kann, wie macht man das?

    also, wenn z.b ganz einfach jetzt nur mal einen text in eine datei speichern will, ich aber nicht will, daß dieser z.b. mit dem texteditor angezeigt werden kann.... geht das so ohne weiteres, oder was muß man da noch alles beachten
    es hilft ja allein nix, die datei nur mit einer anderen endung abzuspeichern...

    Bin für jeden Tip dankbar!

    Mfg



  • Du mußt eine Datei Identifikation festlegen, wobei deine Datei einen Header mit einer kennung erhält, diese Kennung darf nicht mit einer bekannten gleich sein, welche es bereits giebt, kannst du auf einer Seite im Web nachlesen, desen Link habe ich gerade nicht zur Hand, muß ich erst raussuchen.
    Dennoch könnte ich deine datei in Ultraedit einladen und den Test lesen, aber das könnte ich auch mit einem Prog machen und dessen Strings lesen, mit einer Codierung wäre der Text dann auch nicht mehr lesbar.



  • Willst du das es der normale User nicht schafft oder suchst du nach extrem sicheren Algorithmen für deine Daten?

    Damits der Texteditor dem normalen User nicht mehr bringt baust du einfach ROT13 rein und addest nen 10-Byte-Header mit Typversion, etc. und fertig 😉

    MfG SideWinder



  • Tag!

    Erstmal Danke euch beiden... hört sich beides interessant an..
    MiC++ha:Also wäre nett, wenn du den link finden würdest... dann kann ich da mal
    nachschauen

    SideWinder: ja, das ist nur, daß der normale User es nicht schafft..
    Wie baut man einen Header ein? hab mich mit sowas direkt noch nicht beschäftigt, wie sowas geht... und was ist ROT13... ein Verschlüsselungsalgorithmus?

    also, nochmals Danke...
    Mfg



  • jau, so hier ist der Link http://www.wotsit.org/
    Da kannst dir auch mal Angucken wie diverse Dateien aufgebaut sind.



  • @Micha: Auf der Page findest du bloß bestehende Dateiformate und ich glaube die sind für seinen Nutzen hier etwas zu überdimensioniert.

    @Emanuel: Eine Datei ist meistens so aufgebaut:

    -----
    Typversion
    Informationen zum Nachfolgenden Inhalt (bei bmp zB Auflösung, Farbauflösung, etc.)
    -----
    elem1
    elem2
    elem3
    elem4
    elem5
    -----
    

    Das heißt du brauchst zwei struct - eins das den Header aufnimmt und eine andere für jedes elem-Element (die ja alle gleich aufgebaut sind). Da bei dir typeof(elem) == char ist kannst du dir hier eine struct sparen und auf sowas reduzieren:

    struct mytype_header
    {
        // hier infos die allgemein für deine datei gelten, zB die dateitypversion
        __int16 version;
    };
    

    Dann einfach einen mytype_header anlegen und per WriteFile() rausschreiben. Dann die Zeichen die du in der Datei haben möchtest rausschreiben, aber zuvor immer um +13 weiter rotieren (ROT13), also buffer[i] = buffer[i]+13; Damit kanns der normale User in der Datei nicht mehr sehen. Ein Computer braucht für die Entschlüsselung eines ROT13 keine 5 Minuten aber egal 🙂 Beim Auslesen einfach immer wieder buffer[i] = eingelesen[i]-13; und du hast wieder die Originalwerte.

    Dann einfach noch die Datei irgendwas wie dateiname.dat nennen - fertig 🙂

    MfG SideWinder



  • Hallo!

    Danke, werd gleich mal unter dem link nachschauen, was da alles gibt 🙂

    Ok, ich werd das dann mal so probieren, wie du es unten geschildert hast @SideWinder...

    Danke nochmals Euch beiden...

    Mfg


Anmelden zum Antworten