|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
DerJJ Junior JLI'ler
Anmeldedatum: 24.12.2002 Beiträge: 84
Medaillen: Keine
|
Verfasst am: 16.04.2003, 11:58 Titel: Fragen zu "Dateiarbeit" |
|
|
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 |
|
|
DarK Super JLI'ler
Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 16.04.2003, 16:13 Titel: |
|
|
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 ....
also bei mir hat es so geklappt
3. Rechtsklick -> Eigenschaften -> Schreibgeschütz
Ich weiss der war mies |
|
Nach oben |
|
|
Starwash Senior JLI'ler
Alter: 40 Anmeldedatum: 22.09.2002 Beiträge: 252 Wohnort: Zossen (bei Berlin) Medaillen: Keine
|
Verfasst am: 16.04.2003, 16:44 Titel: |
|
|
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 |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 16.04.2003, 16:54 Titel: |
|
|
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 |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 16.04.2003, 17:04 Titel: |
|
|
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 |
|
|
Starwash Senior JLI'ler
Alter: 40 Anmeldedatum: 22.09.2002 Beiträge: 252 Wohnort: Zossen (bei Berlin) Medaillen: Keine
|
Verfasst am: 16.04.2003, 17:24 Titel: |
|
|
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 |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 16.04.2003, 17:52 Titel: |
|
|
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 |
|
|
Starwash Senior JLI'ler
Alter: 40 Anmeldedatum: 22.09.2002 Beiträge: 252 Wohnort: Zossen (bei Berlin) Medaillen: Keine
|
Verfasst am: 17.04.2003, 06:39 Titel: |
|
|
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 |
|
|
Sören JLI Master Trainee
Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 17.04.2003, 16:11 Titel: |
|
|
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 ). 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 . Wie immer zahlt sich rumprobieren
positiv aus, wenn es darum geht an eine gewünschte Lösung zu gelangen. |
|
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 17.04.2003, 16:40 Titel: |
|
|
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 |
|
|
Sören JLI Master Trainee
Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 17.04.2003, 17:13 Titel: |
|
|
Naja, das bezieht sich mehr auf das Hilfesystem, hab mich etwas unglücklich ausgedrückt . 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 |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 17.04.2003, 17:57 Titel: |
|
|
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 |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 17.04.2003, 20:49 Titel: |
|
|
Ich versuche mal über Ostern PHPNuke zu installieren, da kannst du dann deine Artikel posten....ich hoffe ich bin so schnell.....
Christian |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 17.04.2003, 21:44 Titel: |
|
|
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 |
|
|
Revil Senior JLI'ler
Anmeldedatum: 28.07.2002 Beiträge: 242
Medaillen: Keine
|
Verfasst am: 18.04.2003, 09:43 Titel: |
|
|
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...
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 |
|
|
|
|
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
|