|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
magigman Junior JLI'ler
Anmeldedatum: 25.09.2007 Beiträge: 87
Medaillen: Keine
|
Verfasst am: 04.12.2009, 20:59 Titel: eigene dateiendung |
|
|
hallo!!!
ich habe mal wieder eine frage.
also wenn ich eine textdatei mit einer unbekannten endung speichere, zum beispiel blabla.abc und diese mit dem editor öffne, kann er das lesen. wie kann ich das mit einem eigenen programm öffnen, bzw. eine datei mit der endung .abc zu erzeugen???
hoffentlich könnt ihr mr helfen.
danke bereits im vorraus! _________________ Wer einen Rechtschreibefehler findet, darf ihn behalten, in ein Regal stellen und jedem der vobei geht sagen, dass ER ihn gefunden hat. |
|
Nach oben |
|
|
Dr. Best Senior JLI'ler
Alter: 34 Anmeldedatum: 17.06.2004 Beiträge: 269 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 04.12.2009, 23:09 Titel: |
|
|
Notepad schluckt alles, egal wie die Endung ist. Wenn du ein Format mit einem selbst geschriebenen Programm assoziieren willst ist das ganz einfach:
1) Interpretiere in deinem Programm die Befehlszeilenargumente (die Strings, die der main-Funktion übergeben werden). Wenn eine Datei mit deinem Programm geöffnet wird, dann steht der Dateiname in den Befehlszeilenargumenten und das Arbeitsverzeichnis des Programms ist automatisch der Speicherpfad der Datei.
2) Gehe bei einer der Dateien mit deiner eigenen Endung auf Öffnen mit. Dann wähle die *.exe deines Programms aus. Von da an öffnen diese Dateien sich automatisch mit deinem Editor. _________________
Ich bin da, wer noch? |
|
Nach oben |
|
|
magigman Junior JLI'ler
Anmeldedatum: 25.09.2007 Beiträge: 87
Medaillen: Keine
|
Verfasst am: 05.12.2009, 09:38 Titel: |
|
|
mhhh... danke erstmal für die antwort, aber dann steht in meinem programm einfach nur der dateiname. ich will ja aber den inhalt auslesen.
diesen möchte ich dann innerhalb von dem programm verändern können und speichern. _________________ Wer einen Rechtschreibefehler findet, darf ihn behalten, in ein Regal stellen und jedem der vobei geht sagen, dass ER ihn gefunden hat. |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 05.12.2009, 09:53 Titel: |
|
|
Jaaa, aber wenn du doch den Dateinamen hast, kannst du damit diese Datei öffnen. Oder löschen. Oder verschieben. Halt das machen, was dein Programm mit dieser Datei machen soll. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
|
Nach oben |
|
|
magigman Junior JLI'ler
Anmeldedatum: 25.09.2007 Beiträge: 87
Medaillen: Keine
|
Verfasst am: 05.12.2009, 10:34 Titel: |
|
|
Zitat: | Jaaa, aber wenn du doch den Dateinamen hast, kannst du damit diese Datei öffnen. Oder löschen. Oder verschieben. Halt das machen, was dein Programm mit dieser Datei machen soll. |
stimmt... daran habe ich noch gar nicht gedacht.
Zitat: | http://www.codersource.net/cpp_file_io.html
Müsste auch im JLI ein Kapitel darüber geben. |
im jli steht das nur mit .txt und .bin dateien. ich habe gedacht das ging nur mit denen.
es funktioniert jetzt. danke für die schnellen antworten (am wochenende geht das halt immer ein bisschen schneller ) _________________ Wer einen Rechtschreibefehler findet, darf ihn behalten, in ein Regal stellen und jedem der vobei geht sagen, dass ER ihn gefunden hat. |
|
Nach oben |
|
|
Otscho Super JLI'ler
Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 05.12.2009, 15:16 Titel: |
|
|
Ohne dich jetzt verwirren zu wollen magigman, aber du kannst dein neues Dateiformat auch manuell in die Registry deines OS schreiben. Dann stehen dir mehr Möglichkeiten offen einzustellen wie dein Dateiformat vom Windows Explorer behandelt werden soll, sprich Icon, Kontextmenü, ... .
Und du kannst alle Einstellungen leichter rückgängig machen und das Format wieder "löschen". |
|
Nach oben |
|
|
magigman Junior JLI'ler
Anmeldedatum: 25.09.2007 Beiträge: 87
Medaillen: Keine
|
Verfasst am: 05.12.2009, 15:19 Titel: |
|
|
@Otscho:
gibt es einen code, dass das programm das selbst macht? _________________ Wer einen Rechtschreibefehler findet, darf ihn behalten, in ein Regal stellen und jedem der vobei geht sagen, dass ER ihn gefunden hat. |
|
Nach oben |
|
|
Otscho Super JLI'ler
Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 05.12.2009, 18:19 Titel: |
|
|
Natürlich kann das auch dein Programm selber machen;)
Hier findest du ein Sample, welches dir zeigt wie du von deinem Programm aus auf die Windows-Registry zugreifen kannst.
http://www.jliforum.de/afe-gmdg/registry/registry_vc6.zip
In die Registy schreibst dann in etwa sowas rein:
Code: | [HKEY_CLASSES_ROOT\.mla]
@="Melioware Ascii Datei"
[HKEY_CLASSES_ROOT\.mla\Melioware Ascii Datei]
[HKEY_CLASSES_ROOT\.mla\Melioware Ascii Datei\ShellNew]
|
Sprich unter dem "Schlüssel" HKEY_CLASSES_ROOT\ erstellst du einen neuen Schlüssel der deine Datei-Endung enthält ( mit Punkt am Anfang !!, hier ".mla") und mit dem Standardwert des vollen Namens deines Dateiformats (hier Melioware Ascii Datei).
Dann erstellst dort noch einen Schlüssel mit dem selben Namen und darin nochmal einen Schlüssel Namens "ShellNew";
(Wenn ich mich nicht irre, kannst auch den letzten Schritt weglassen. )
So dass war der erste Teil.
Jetzt musst nochmal nen nen Schlüssel in HKEY_CLASSES_ROOT erstellen mit dem Namen den du dir für dein Dateiformat oben ausgedacht hast (also hier: Melioware Ascii Datei):
Code: | [HKEY_CLASSES_ROOT\Melioware Ascii Datei]
@="Datei für das Melioware Programm im Textformat"
[HKEY_CLASSES_ROOT\Melioware Ascii Datei\DefaultIcon]
@="C:\\Windows\\Installer\\{19C1897D-A226-4EBD-8689-1AA28B03B912}\\_934312A2105DE40686D86A.exe,0"
[HKEY_CLASSES_ROOT\Melioware Ascii Datei\shell]
@="open"
[HKEY_CLASSES_ROOT\Melioware Ascii Datei\shell\open]
@="&Open"
[HKEY_CLASSES_ROOT\Melioware Ascii Datei\shell\open\command]
@="\"D:\\Programme\\Melioware\\MelioBasic\\Release\\MelioBasic.exe\" \"%1\"" |
Als Standardwert schreibst da deine kleine Beschreibung über das Format rein. Diese wird dann im Windows Explorer unter dem Stichwort "Typ" angezeigt, oder wenn du mit der Maus drüber fährst. Also keine Tippfehler reinhauen (hier: Datei für das Melioware Programm im Textformat).
Dann machst nen neuen Schlüssel namens DefaultIcon, bei welchem der Standartwert die Addresse des Icons (im Ico-Format !!) entspricht. Das kann auch als Resource in einer exe, dll oder sonstigen gelinkten Datei drinnstecken, wie hier ner Installer-Anwendung.
Dann erstellst noch nen Schlüssel namens "shell" da ist der Standardwert der Name der Aktion, welche bei einem Doppelklick auf die Datei im Explorer ausgeführt werden soll ( hier :"open").
Diese Aktionen definierst du einem "Unterschlüssel" von Shell welcher jeweils den Namen der Aktion in seinem Namen trägt und als Standardwert das selbe nur mit einem & vorne drann und mit einem Großbuchstaben beginnend, hierbei gibt es so ein paar Windows Standards, wie "&Open", "&Edit", ... ka was noch) diese werden vom System automatisch in die Sprache des Anwenders übersetzt. Das ist insofern interesant da diese dann auch im Kontextmenü des Explorers angezeigt werden.
Diese Aktionen bekommen dann noch einen Schlüssel namens "command" welcher als Standardwert die Anwendung enthält plus mit welchem Argument sie aufgerufen werden soll (hier: "%1").
Wenn ich mich recht erinnere gibt %1 den Pfad der Datei wieder und die Gänsefüsschen sind desshalb sehr wichtig, da du nur so sicherstellen kannst, dass die Addrese deiner zu öffnenden Datei als ein ganzer String übergeben wird und nicht nach jedem Leerzeichen ein Neuer erstellt wird. Sprich du bekommst "C:\\bla blub\Meine Datei.abc" statt C:\\bla als erstes Argument und blub\Meine als zweites Argument uns so weiter was sehr nervig sein kann.
mfg Matthias |
|
Nach oben |
|
|
magigman Junior JLI'ler
Anmeldedatum: 25.09.2007 Beiträge: 87
Medaillen: Keine
|
Verfasst am: 06.12.2009, 12:34 Titel: |
|
|
mhh... danke, aber ich mülle meine registry lieber nicht zu
ich habe es jetzt mit argv[] gemacht, aber wie kann ich die \ in \\ umwandeln??? _________________ Wer einen Rechtschreibefehler findet, darf ihn behalten, in ein Regal stellen und jedem der vobei geht sagen, dass ER ihn gefunden hat. |
|
Nach oben |
|
|
Otscho Super JLI'ler
Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 06.12.2009, 15:35 Titel: |
|
|
Eigentlich hab ich dir das nur gepostet damit dir Windows nicht irgendwas in die Regstry schreibt von dem du keine Ahnung hast, wenn du es mit Rechtsklick -> öffnen mit -> immer mit dem ausgewählten Programm öffnen machst. Ja - da wird auch was in die Registry geschrieben:D
Das mit argv[] ist ja wieder etwas anderes
Was meinst du mit "wie kann ich die \ in \\ umwandeln???" ?
Nach \ suchen und die dann durch \\ ersetzen ?
Bzw. nochmal ein \ dahinter reinschieben ? |
|
Nach oben |
|
|
magigman Junior JLI'ler
Anmeldedatum: 25.09.2007 Beiträge: 87
Medaillen: Keine
|
Verfasst am: 06.12.2009, 15:39 Titel: |
|
|
das meine ich. (noch ein \ dran setzen)
sonst kann ich den dateinamen nicht verwenden, da es sie ja dann nicht gibt.
*edit* achja... wie trenne ich den pfad des programmes ab? in argv[] wird ja der programmname und der dateiname gespeichert. _________________ Wer einen Rechtschreibefehler findet, darf ihn behalten, in ein Regal stellen und jedem der vobei geht sagen, dass ER ihn gefunden hat. |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 07.12.2009, 10:16 Titel: |
|
|
Aua - Ich wusste nicht, dass sich jemand noch meinen Code anschaut
Warnhinweis: Der Code ist für Visual C++ 6 geschrieben.
Er wird anzunehmenderweise auch mit den neuen Umgebungen funktionieren, aber kontrolliert besser, was die Anweisungen tun sollen.
MfG, AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
magigman Junior JLI'ler
Anmeldedatum: 25.09.2007 Beiträge: 87
Medaillen: Keine
|
Verfasst am: 07.12.2009, 14:06 Titel: |
|
|
wie kann ich den argv[] jetzt teilen und den 2.teil speichern? _________________ Wer einen Rechtschreibefehler findet, darf ihn behalten, in ein Regal stellen und jedem der vobei geht sagen, dass ER ihn gefunden hat. |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 08.12.2009, 19:04 Titel: |
|
|
strncpy ist dein Freund. _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|