JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Fragen zu "Dateiarbeit"
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
DerJJ
Junior JLI'ler



Anmeldedatum: 24.12.2002
Beiträge: 84

Medaillen: Keine

BeitragVerfasst am: 16.04.2003, 11:58    Titel: Fragen zu "Dateiarbeit" Antworten mit Zitat

1. Kann mir jemand sagen wie ich in einer Datei etwas suchen kann?
2. Schon geklärt, Danke!
3. Wie kann ich eine Datei schreibgeschüzt machen, und umgekehrt?
4. Wenn ich einen String mit fgets aus einer Datei auslese und in einer EditBox darstelle, dann ist hinter dem text immer ein |, das steht aber in der Datei nicht drin, wie kann ich das unterbinden?
5. Wie kann ich einen neuen Ordner erstellen?

Danke schonmal...

Nich ganz zu dem Thema, aber wie kann ich beliebige Dateien zu meiner Exe hinzufügen, und diese dann später extrahieren?


Zuletzt bearbeitet von DerJJ am 16.04.2003, 16:17, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 16.04.2003, 16:13    Titel: Antworten mit Zitat

2. gerade noch gecodet und schon wieder nützlich:
Code:

char zeile[10][40];
int x = 0;
File *Datei;

Datei = fopen("xxx.txt", "r");
while(!feof(Datei))
{      
        fgets(zeile[x], 40, Datei);
        x++;
}


mit zeile[x] kannst du nun auf jede Zeile der Datei zugreifen, von jeder Zeile werden nur 40 Zeichen gelesen...
ich hoffe das es das ist was du meinst .... Rolling Eyes
also bei mir hat es so geklappt Very Happy

3. Rechtsklick -> Eigenschaften -> Schreibgeschütz
Ich weiss der war mies Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Starwash
Senior JLI'ler


Alter: 40
Anmeldedatum: 22.09.2002
Beiträge: 252
Wohnort: Zossen (bei Berlin)
Medaillen: Keine

BeitragVerfasst am: 16.04.2003, 16:44    Titel: Antworten mit Zitat

Dark,
auf diese Art und Weise begrenzt du aber eine Datei auf 10 Zeilen?!?
Hier mal meine Lösung des Problems als Pseudo-Code...
Code:

Cursor in Datei auf Anfang setzen
Bis (Ende von Datei) ODER (Gefunden) tue{
 Zeile auslesen
 String dursuchen
}


Auf diese Weise solltest du die Datei mehrmals durchsuchen können ohne große Probleme zu haben...solltest du aber von der Funktionalität unbedingt deinem Programm anpassen (bspw. könnte die Zeile für dich wichtig sein, dann solltest du die Zeilen mitlesen lassen oder oder oder)...

Die <io.h> enthält die Attribute der Dateien, welche über die Suchfunktionen ausgelesen werden können...
(bspw. _A_RDONLY)

Ordner erstellen:
Code:
BOOL CreateDirectory(
  LPCTSTR lpPathName,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes
);

Diese Funktion ist in der <winbase.h> dekalriert.

Zu 4.:
Es könnte sich um den Zeilenumbruch handeln, welcher in der Datei steht oder aber du hast vergessen, dass du strlen(char*)-1 nutzen musst, da letztes Zeichen = '\0'.

Gruss Tarek
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 16.04.2003, 16:54    Titel: Antworten mit Zitat

Apnik hat recht. Deine Version ist viel zu fehleranfällig und unflexibel. So mache ich das:

Code:

#include <iostream.h>
#include <fstream.h>
#include <string>
#include <vector>

using namespace std;

void main()
{
   // Zeilen, die ausgelesen werden
   vector<string> lines;

   // Input file stream
   ifstream file;

   // Datei öffnen
   file.open("foo.bar");

   while(!file.eof())
   {
      char buf[256];

      // Zeile auslesen...
      file.getline(buf, 256);

      // ... und dem Vektor hinzufügen
      lines.push_back(buf);
   }

   // Datei schließen
   file.close();

   // Alles ausgeben
   for(int i = 0; i < lines.size(); ++i)
      cout << lines[i].c_str() << '\n';
}


Dabei ist es egal, wieviel Zeilen in der Datei stehen.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 16.04.2003, 17:04    Titel: Antworten mit Zitat

Zu deinen anderen Fragen:

1. Was für string Klassen benutzt du? Wenn du C-Style Strings benutzt, musst du ihn Zeichen für Zeichen durchgehen und vergleichen.

3. Weiß ich noch nicht. ;)

4. Das ist das New-Line Zeichen... Ließ die Dateien so aus wie ich und das wird verschwinden, weil ::getline() das New-Line Zeichen nicht mit einließt.

5. Mir fällt auf die schnelle nur das ein:
Code:

string folder_name("test");
system(("md " + folder_name).c_str());


Sieht aber nicht schön aus. ;)
"md" ist der DOS-Befehl um ein Verzeichnis zu erstellen.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Starwash
Senior JLI'ler


Alter: 40
Anmeldedatum: 22.09.2002
Beiträge: 252
Wohnort: Zossen (bei Berlin)
Medaillen: Keine

BeitragVerfasst am: 16.04.2003, 17:24    Titel: Antworten mit Zitat

In der Winbase.h lässt sich noch folgende Funktion finden...
Code:
BOOL SetFileAttributes(
  LPCTSTR lpFileName,
  DWORD dwFileAttributes
);


Die Funktionsnamen sind finde ich doch eigentlich immer relativ passen gewählt also warum nutzt hier eigentlich kaum einer MSDN? Oder macht es so wie ich, wenn ich ne Funktion nicht finde die Header direkt durchsuchen?!? Ich merke schon die nächste Generation von Programmierern braucht noch ein wenig Zeit und Übung...hoffentlich reicht das....

Gruss Tarek
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 16.04.2003, 17:52    Titel: Antworten mit Zitat

Hey, ich hatte noch garnicht danach gesucht. :) *fühlt sich nicht angesprochen, weil er sonst auch alles alleine rauskriegt :P*
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Starwash
Senior JLI'ler


Alter: 40
Anmeldedatum: 22.09.2002
Beiträge: 252
Wohnort: Zossen (bei Berlin)
Medaillen: Keine

BeitragVerfasst am: 17.04.2003, 06:39    Titel: Antworten mit Zitat

Nein, nein Hazel, du musst dich nicht angesprochen fühlen, aber ich glaube die Leute wissen selber, wie das Verhältnis bei Ihnen aussieht, selber mal ne Doku zu welzen oder schnell was in Foren zu fragen...
Ich bevorzuge eigentlich die Doku und nur, wenn ich garnicht weiter komme, dann wende ich mich an Foren...doch die neue Generation scheint dies anders zu machen...naja

Gruss Tarek
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 17.04.2003, 16:11    Titel: Antworten mit Zitat

Ich habe mal einen kleine Artikel geschrieben, wie man in der Doku suchen sollte. Da ich im Moment keinen richtigen Webspace besitze, poste ich in hier:
Zitat:
Willkommen zu meinem kleinen how-to-use Artikel über die MSDN! Wir wollen uns anschauen
wie man das umfangreiche Hilfesystem von MS Visual C++ nutzen können.


Inhaltsverzeichnis:
~~~~~~~~~~~~~~

1. Vorwort
2. Möglichkeiten der MSDN
3. Den Index zielstrebig nutzen
4. Die Suche über die "Suchen"-Karte eingrenzen
5. Schlusswort


1. Vorwort
~ ~~~~~~
Die MSDN ist für jeden Programmierer eine elementare Hilfe(das gilt natürlich nur für die
Programmierer, die auch VC++ nutzen Wink ). Da sich der Artikel mit dem "Selbsthelfen" befasst,
liste ich hier noch einige Prioritäten auf, die der Programmierer beachten sollte, wenn er
etwas wissen möchte(aus welchem Grund auch immer):
1. Noch einmal scharf nachdenken und dann eine intensive(!) MSDN-Suche starten.
2. Wurde in der MSDN nichts gefunden, wird www.google.de zu Rate gezogen. Genaue
Stichworte und Angaben, sind der Schlüssel zum Erfolg mit google.
3. Wurde ebenfalls mit google nichts brauchbares an Land gezogen, sollte der Programmierer
nun einige Foren zu Rate ziehen und in diesen Foren die vorhandene Suchfunktion nutzen.
Genaue Suche zahlt sich hier, wie bei google, ebenfalls aus.
4. Liegen die Wurzeln des Problems tiefer und es wurde mit der Hilfe der Suchfunktion immer
noch nichts gefunden, sollten wir nun einen Thread in jene Foren eröffnen, dabei gilt es folgendes
zu beachten: 1)Versucht eure schon Frage möglichst genau im Titel des Threads zu treffen, Titel
wie "Frage" oder "kleines Problem" sind einfach unbrauchbar! Mit einer genauen Schilderung
helft ihr erstens euren Nachfolgern bei einer Suche und zweitens schond ihr die Nerven von Mods und
Usern! 2) Mit einer "Gebt mir Code, den ich dann möglichst leicht in meinem Projekt einfügen kann"
Einstellung, solltet ihr euch nicht wundern, wenn ihr euch damit unbeliebt macht und keine Hilfe
bekommt. 3) Versucht es zu Verstehen, was euch vermittelt wird.
Alternativ können natürlich auch einige Buddys per ICQ angequatscht werden.

Und damit ihr die Stufen 2,3 und 4 nicht erst bewältigen müsst, sondern schon bei Nummer 1 die
Lösung findet, lesen wir diesen kleinen Artikel =).

Danken möchte ich an dieser Stelle kurz das VC++ Dokuteam und Chuck Sphar, da ich einiges in seinem
Buch über das Hilfesystem gelernt habe, was ich auch in diesen Artikel unte4rgebracht habe.


2. Möglichkeiten der MSDN
~ ~~~~~~~~~~~~~~~~~~~~
In der MSDN gibt es wohl insgesamt vier wichtige Möglichkeiten auf Hilfe zu stossen und die
sehen wir uns hier mal an:
->Schnelle suche mit F1. Einfach Stichwort makieren und F1-Taste drücken. Die MSDN listet dann
freundlicherweise einige Themen auf.
->Das Stichwortverzeichnis. Unter der Karteikarte Index findet sich ein umfassendes Verzeichnis
von Stichwörtern.
->Die Online Hilfeversion ist unter www.msdn.com zu erreichen. Englischkenntnisse zahlen sich hier
aus, sind aber in der Programmierung sowieso vorrausgesetzt. Unter Umständen ist es der letzte Weg
zum Zierl zu finden, obwohl die Suche zeitweise anstrengend sein kann.
->Inhaltsverzeichnis. Die Baumstruktur befindet sich in der Karteikarte "Inhalt". Zum Suchen ist dieser Weg
ungeeignet, er bietet sich jedoch an, wenn wir unser Wissen einwenig auffrischen möchten und uns auf
unerforschten Terrain begeben wollen;).

3. Den Index zielstrebig nutzen
~ ~~~~~~~~~~~~~~~~~~~~~~
Um den Index zielstrebig zu nutzen, ist es wichtig zu wissen, wie das Stichwortverzeichnis funktioniert.
Die Suche kann entscheidend eingegrenzt werden, indem man spezifischere Ausdrücke verwendet.
Wollen wir beispielsweise ein Symbol in unserem Programm erstellen, führt eine Eingabe, wie "Erstellen
von Symbolen"(eine _richtige_ Themenauswahl) schneller zum Ziel, als beispielsweise "Symbol"(über 20
Themenauswahlen, von denen vielleicht 2 für uns von nutzen sind). Das Dukoteam tendiert inzwischen dazu,
allgemeine Themen mit allgemeinen Schlüsselwörtern zu indizieren und sonderliche Themen mit spezifischen
Schlüsselwörtern bzw. längeren Ausdrücken. Auf diese Weise kann der Index effektiver genutzt werden.
Sollte ein Begriff uns nicht sofort zum Tiel bringen, dann klappt es wahrscheinlich mit einem anderen, zB "Erstellung"
oder "Verwendung" statt "Erstellen".
Es gilt natürlich "alle Wege führen nach Rom", aber wenn wir uns erst durch Zahlreiche Hilfeseiten durchklicken
müssen, dann ist es doch schon ein kleiner, aber feiner, Unterschied!

4. Die Suche über die "Suchen"-Karte eingrenzen
~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Auch die Volltextsuche kann gegebenenfalls zum Ziel führen. Darum gilt es einiges zu beachten:
Die Volltextsuche listet uns alle Artikel auf, indem der von uns erwähnte Ausdrück vorkommt. Es bietet
sich daher in den meisten Situationen an, "Suchen" erst nach "Index" zu nutzen.
Mit einem Häkchen an "Vorherige Ergebnisse Suchen", grenzen wir die Suche auf die bisher gefundenen
Themen ein. So haben wir die Möglichkeit mit jedem Suchvorgang, jeweils die Suche genauer einzuschränken.
Es empfiehlt sich ebenfalls ein Häkchen an "Nur Titel suchen" zu setzen, da sonst auch Themen aufgelistet
werden, weil sie beispielsweise nur einen Verweis auf unser Schlüsselwort besitzen. Eine Titelsuche führt
daher eher zu einem nützliche Thema.
Auch sollten wir - wenn nötig - Anführungsstriche setzen, da Ausdrücke in Anführungsstriche anders von
interpretiert werden. Das Hilfesystem liefert uns dann nur Themen, indenen auch der/die Ausdrück(e) in der
festgelegten Reihenfolge vorkommen.
Bei der Volltextsuche werden auch logische Operatoren berücksichtigt:
Zum Beispiel liefert uns folgende Eingabe: "Variable AND (float OR bool) NOT char", alle Themen indenen
"Variable" und entweder "float" oder "bool", aber _nicht_ "char"! Setzen von logischen Operatoren kann uns
also erheblich helfen. Ebenfalls ist der universielle Platzhalter "*" im Hilfesystem integriert.

5. Schlusswort
~ ~~~~~~~~~
So, das war's auch schon. Ich hoffe es hat euch gefallen bzw. geholfen.
Kritik und (hoffentlich) Lob könnt ihr an miracleboy@freenet.de senden Wink. Wie immer zahlt sich rumprobieren
positiv aus, wenn es darum geht an eine gewünschte Lösung zu gelangen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 17.04.2003, 16:40    Titel: Antworten mit Zitat

Zitat:
das gilt natürlich nur für die
Programmierer, die auch VC++ nutzen

Begründung? O.o
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 17.04.2003, 17:13    Titel: Antworten mit Zitat

Naja, das bezieht sich mehr auf das Hilfesystem, hab mich etwas unglücklich ausgedrückt Embarassed . Aber im Grunde hast du Recht. Danke.
// Edit
Vielleicht sollte ich hinzufügen, dass es mein erster Artikel ist und ich einwenig müde war als ich ihn eben geschrieben hab.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 17.04.2003, 17:57    Titel: Antworten mit Zitat

Also ich hab mir den jetzt durchgelesen. Ist doch gut gelungen und die Idee ist auch super! Jetzt können wir nur noch beten, dass Newbies dem Artikel beachtung schenken...
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 17.04.2003, 20:49    Titel: Antworten mit Zitat

Ich versuche mal über Ostern PHPNuke zu installieren, da kannst du dann deine Artikel posten....ich hoffe ich bin so schnell.....

Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 17.04.2003, 21:44    Titel: Antworten mit Zitat

Das mit den Artikeln ist 'ne coole Idee! Ich hätte auch mal Lust welche zu schreiben. :)
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Revil
Senior JLI'ler



Anmeldedatum: 28.07.2002
Beiträge: 242

Medaillen: Keine

BeitragVerfasst am: 18.04.2003, 09:43    Titel: Antworten mit Zitat

Christian Rousselle hat Folgendes geschrieben:
Ich versuche mal über Ostern PHPNuke zu installieren, da kannst du dann deine Artikel posten....ich hoffe ich bin so schnell.....

Christian


ihh wieso denn phpnuke... Question

ich finde ein erweiteres phpbb2 viel besser...

hier gibts massig erweiterungen...

http://www.phpbbhacks.com/

den besten portalhack meiner meinung nach gibts hier:

http://smartor.is-root.com/


bevor du die hacks draufmachst solltest du aber unbedingt mal auf 2.0.4 upgraden...
_________________


Take this
Code:
php -r "print rand(-1,0)?Gewonnen:Verloren;"

and this
Code:
perl -e "print( ('Gewonnen', 'Verloren')[rand 2])"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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