JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=c77b6d71f31a8dbf9b54632e8ee15a91Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

eigene dateiendung
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
magigman
Junior JLI'ler



Anmeldedatum: 25.09.2007
Beiträge: 87

Medaillen: Keine

BeitragVerfasst am: 04.12.2009, 20:59    Titel: eigene dateiendung Antworten mit Zitat

hallo!!!
ich habe mal wieder eine frage. Laughing
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
Benutzer-Profile anzeigen Private Nachricht senden
Dr. Best
Senior JLI'ler


Alter: 34
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 04.12.2009, 23:09    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
magigman
Junior JLI'ler



Anmeldedatum: 25.09.2007
Beiträge: 87

Medaillen: Keine

BeitragVerfasst am: 05.12.2009, 09:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 05.12.2009, 09:53    Titel: Antworten mit 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.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 05.12.2009, 10:02    Titel: Antworten mit Zitat

http://www.codersource.net/cpp_file_io.html

Müsste auch im JLI ein Kapitel darüber geben.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
magigman
Junior JLI'ler



Anmeldedatum: 25.09.2007
Beiträge: 87

Medaillen: Keine

BeitragVerfasst am: 05.12.2009, 10:34    Titel: Antworten mit Zitat

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. Rolling Eyes Embarassed
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 Wink )
_________________
Wer einen Rechtschreibefehler findet, darf ihn behalten, in ein Regal stellen und jedem der vobei geht sagen, dass ER ihn gefunden hat.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Otscho
Super JLI'ler


Alter: 36
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 05.12.2009, 15:16    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
magigman
Junior JLI'ler



Anmeldedatum: 25.09.2007
Beiträge: 87

Medaillen: Keine

BeitragVerfasst am: 05.12.2009, 15:19    Titel: Antworten mit Zitat

@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
Benutzer-Profile anzeigen Private Nachricht senden
Otscho
Super JLI'ler


Alter: 36
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 05.12.2009, 18:19    Titel: Antworten mit Zitat

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. Very Happy

mfg Matthias
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
magigman
Junior JLI'ler



Anmeldedatum: 25.09.2007
Beiträge: 87

Medaillen: Keine

BeitragVerfasst am: 06.12.2009, 12:34    Titel: Antworten mit Zitat

mhh... danke, aber ich mülle meine registry lieber nicht zu Wink
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
Benutzer-Profile anzeigen Private Nachricht senden
Otscho
Super JLI'ler


Alter: 36
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 06.12.2009, 15:35    Titel: Antworten mit Zitat

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 Wink

Was meinst du mit "wie kann ich die \ in \\ umwandeln???" ?
Nach \ suchen und die dann durch \\ ersetzen ?
Bzw. nochmal ein \ dahinter reinschieben ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
magigman
Junior JLI'ler



Anmeldedatum: 25.09.2007
Beiträge: 87

Medaillen: Keine

BeitragVerfasst am: 06.12.2009, 15:39    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 07.12.2009, 10:16    Titel: Antworten mit Zitat

Otscho hat Folgendes geschrieben:
...
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
...


Aua - Ich wusste nicht, dass sich jemand noch meinen Code anschaut Smile
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
magigman
Junior JLI'ler



Anmeldedatum: 25.09.2007
Beiträge: 87

Medaillen: Keine

BeitragVerfasst am: 07.12.2009, 14:06    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 08.12.2009, 19:04    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
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

Impressum