TweakPC

Zurück   Computer Hardware Forum - TweakPC > Games und Software > Programmiersprachen
Registrieren Hilfe Community Downloads

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07.02.2006, 16:26   #1 (permalink)
Fingerabzähler
 

Registriert seit: 07.02.2006
Beiträge: 8

Littlefreddy befindet sich auf einem aufstrebenden Ast

Standard C++ Problem mit Dateien

Hallo ich habe ein Problem!

Eine Datei kriege ich zwar geöffnet aber ich möchte einen algorithmus rein bringen und sich jedesmal den Dateinamen selber wieder zusammen bauen! Undzwar möchte ich einen Ordner durchsuchen und dort nach alle Dateien nach Lücken durch suchen und das halt in einer Schleife.

Z.B. er soll in c:\TEST\ die Dateien 31330101.txt suchen kurz öffnen,wenn er sie nciht öffnen kann dann ist die Datei ja nit da und den namen dann ausgeben und dann die Datei 31330102.txt nehmen und öffnen,etc.!!

Nur bei mir macht er die string Addition nicht um den neuen dateinamen daraus zu bilden,hat da jemand einen kleinen quellcode der sowas macht, bzw. ne Idee?? Habe leider nirgendswo was darüber gefunden!

Vielen Dank!
Littlefreddy ist offline   Mit Zitat antworten
Alt 07.02.2006, 21:10   #2 (permalink)
Hardware Freak
 
Benutzerbild von BomberD
 

Registriert seit: 10.04.2002
Beiträge: 7.476

BomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer Anblick

Standard AW: C++ Problem mit Dateien

hö?

also string addition ist rcht simpel string c=string a+ string b
bei dateinamen musst du aufpassen dass du reservierte zeichen markierst mit \

dein dateiname mit pfad ist also "c:\\TEST\\31330101.txt"

wenn du die neue nummer haben willst dann
string path="c:\\TEST\\";
string filename="bla.txt";
string filepath;
filepath=path+filename;

wie du auf die dateinamen kommst weis ich ja nicht^^
es gibt auch die möglichkeit direkt in einem ordner zu prüfen wie viele dateien mit ner bestimmten endung oder nem bestimmten teilstring enthalten sind. aber frag mich net wie das ging. www.developer.net da mal gucken.

probier mal mit dem system.io.filereader, der hat glaub ich ne prüfung ob die datei existiert.
BomberD ist offline   Mit Zitat antworten
Alt 07.02.2006, 21:22   #3 (permalink)
Fingerabzähler
 

Registriert seit: 07.02.2006
Beiträge: 8

Littlefreddy befindet sich auf einem aufstrebenden Ast

Standard AW: C++ Problem mit Dateien

Also so ind er Richtung habe ichd as versucht,es sei dabei gesagt das cih das mit der IDE Turbo C++ Mache! Also rein Editor!
Und da versemmelt er mir das irgendwie!
Also wie gesagt die Endung bleibt gleich lediglich die letzten 4 Ziffern ändern sich die ersten zwei der 4 Ziffern stehen für eine Zahl die um 1 erhöht wird wenn die letzten 2 Ziffern der 4 Ziffern bei 30 angekommen sind!
Und nun will ich mit dieser Schleife ein kleines Progrämmchen tipseln was mit die Dateien rausschreibt die vom Thema abweichen!
Und lediglich das String zusammen basteln in einer Schleife will nicht gelingen!
Der Rest steht ja schon soweit!!
Ich werd emir das morgen auf der Arbeit nochaml genau anschauen und dann kann ich mal einen kleinen Auszug posten!

Trotzdem schonmal THX!
Littlefreddy ist offline   Mit Zitat antworten
Alt 08.02.2006, 06:38   #4 (permalink)
Hardware Freak
 
Benutzerbild von BomberD
 

Registriert seit: 10.04.2002
Beiträge: 7.476

BomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer AnblickBomberD ist ein wunderbarer Anblick

Standard AW: C++ Problem mit Dateien

Du arbeitest mit Ziffern. kann es sein, dass du bei dem zusammenfügen des Strings die Integer nicht in einen String gewandelt hast? Naja, der Compiler sollte das eigentlich merken^^.

Kannst du den Code posten also nur die Schleife wo du die Strings zusammenfügst? vielleicht sieht man schon was...

edit: ich hab grad mal nachgeschaut und für c++(MSVS 6) auch nur die Lösung mit dem öffnen und nachträglichem Auswerten gefunden. Beim Visual Studio 2003 gibts da schon mehr Möglichkeiten (Stichwort file.exists )

Das ist ja aber auch nicht das Problem.

Geändert von BomberD (08.02.2006 um 08:31 Uhr)
BomberD ist offline   Mit Zitat antworten
Alt 08.02.2006, 10:46   #5 (permalink)
Fingerabzähler
 

Registriert seit: 07.02.2006
Beiträge: 8

Littlefreddy befindet sich auf einem aufstrebenden Ast

Standard AW: C++ Problem mit Dateien

char store,monat,day;
//store='33';
//monat='02';
day='03';
char Feld[80]="c:\\"+"3302"+"08"+"02"+".005"; // Probleme mit dem zusammenbau eines neuen Dateinamen
char *datei="zeit"+".txt"; // Dasselbe Problem
FILE *fpfp=fopen(datei,"r");
zeichen=fgetc(fpfp);
day++;
if(zeichen==EOF)
{
return(0);
}
else
return(1);
test=getch();
Littlefreddy ist offline   Mit Zitat antworten
Alt 08.02.2006, 17:25   #6 (permalink)
PC Schrauber
 
Benutzerbild von Kernel
 

Registriert seit: 17.07.2005
Beiträge: 171

Kernel sorgt für eine eindrucksvolle AtmosphäreKernel sorgt für eine eindrucksvolle AtmosphäreKernel sorgt für eine eindrucksvolle Atmosphäre

Standard AW: C++ Problem mit Dateien

Zitat:
Zitat von Littlefreddy
char store,monat,day;
//store='33';
//monat='02';
day='03';
char Feld[80]="c:\\"+"3302"+"08"+"02"+".005"; // Probleme mit dem zusammenbau eines neuen Dateinamen
char *datei="zeit"+".txt"; // Dasselbe Problem
FILE *fpfp=fopen(datei,"r");
zeichen=fgetc(fpfp);
day++;
if(zeichen==EOF)
{
return(0);
}
else
return(1);
test=getch();

Warum machst du nicht einfach nen String, den du mit + wie oben beschrieben zusammenfügst.

also string test = "hallo"+"du";

Danach kopierst du den String mittels strcpy(feld, test.c_str())

Damit denk ich haste die wenigsten probleme. Bei dir funzzt das nicht so, weil du ja mit dem Array nen Zeiger definierst den du nacheinander mit deinen Buchstaben belegst. Den +-Operator kennt er dabei nicht.

char *datei="zeit"+".txt";

Das wird noch verherender- Du legst damit nen Zeiger auf char an und dahinein speicherst du irgendwas. Wenn Du Glück hast macht ers nicht wenn doch dann schreibt er dir die Zeit irgendwo in den Arbeitsspeicher (Zeiger sind wenn du Glück hast nach der deklaration auf NULL wenn nicht dann haben sie irgendne Adresse drinnen stehen)

Les dir am besten nochmal alles zu Zeigern und arrays durch.
-den char - Zeiger definierst du bspw. mit
char* datei= new char(); // Speicherplatz reservieren nicht vergessen
--> Den Plus-Operator kennt er dabei logischerweise auch wieder nicht.

Zum Rest des Programms kann ich wenig sage, da ich nicht so richtig weiss was du machen willst.
Was soll z.B day='03' oder day++ ???

Hoffe ich konnte zumindest ein wenig weiterhelfen

Geändert von Kernel (08.02.2006 um 17:31 Uhr)
Kernel ist offline   Mit Zitat antworten
Alt 08.02.2006, 17:37   #7 (permalink)
Overclocker
 
Benutzerbild von Zarniwoop
 

Registriert seit: 18.10.2004
Beiträge: 267

Zarniwoop wird schon bald berühmt werden

Standard AW: C++ Problem mit Dateien

Also wenn du Zahlen in einem Dateinamen einbauen willst, dann geht das auch mit sprintf():

Code:
	
int filenumber = 1;
char filename[20];
sprintf(filename, "pics/file001.jpg" );
	
FILE * test;
	
while( (test=fopen(filename, "r"))  ){
	fclose(test);
	filenumber++;
	sprintf(filename, "pics/file%03d.jpg", filenumber); 
	if(filenumber>999) {
		break;
	}
}
	
write_jpeg_file(filename, 100);
Obiges Codebeispiel aus einem Projekt von mir sucht in dem Verzeichnis /pics nach der Datei filexxx.jpg wo xxx am größten ist. Beim neuen Dateinamen ist die Zahl dann eins höher.

write_jpeg_file() ist eine Funktion die eine JPEG erstellt, kannst du natürlich ignorieren.

sprintf macht dasselbe wie printf, nur dass es in einen string schreibt und nicht auf die Ausgabe. sprintf und printf sind zwar eigentlich aus C, funktionieren aber in C++ genauso.

edit: Ich habe gerade versucht deinen Code entsprechend umzuschreiben, aber irgendwie ist mir das nicht ganz gelungen.
Diese beiden Zeilen:
Code:
char Feld[80]="c:\\"+"3302"+"08"+"02"+".005"; 
char *datei="zeit"+".txt";
kannst du nämlich ersetzen durch

Code:
char Feld[80]="c:\\33020802.005"; 
char datei[80]="zeit.txt";
da du hier ja keine Variablen verwendest.

Zarniwoop

Geändert von Zarniwoop (08.02.2006 um 17:45 Uhr)
Zarniwoop ist offline   Mit Zitat antworten
Alt 08.02.2006, 19:09   #8 (permalink)
Fingerabzähler
 

Registriert seit: 07.02.2006
Beiträge: 8

Littlefreddy befindet sich auf einem aufstrebenden Ast

Standard AW: C++ Problem mit Dateien

@ Kernel String kennt der ja nicht! Arbeite wie schon gesagt mit dem Turbo C++ komplett Editor basiert und string mag er nciht,und das was mit dem Pointer da siehst war der letzte Verzweifelte Versuch und ein überbleibsel!

@Zarniwoop : Die Sprintf funktion sieht nicht schlecht aus! warum das %03d in dem Filenamen??
die 2 Zeilen die du ansprichst war der Test:

char Feld[80]="c:\\"+"3302"+"08"+"02"+".005";

soll durch z.B.

char Feld[80]="c:\\"+"3302"+Monat+Tag+".005";

ersetzt werden,da ich aber erstmal testen wollte ob es generell klappt habe ich es so probiert!! danke für die schnelle Hilfe!!
Littlefreddy ist offline   Mit Zitat antworten
Alt 08.02.2006, 20:17   #9 (permalink)
PC Schrauber
 
Benutzerbild von Kernel
 

Registriert seit: 17.07.2005
Beiträge: 171

Kernel sorgt für eine eindrucksvolle AtmosphäreKernel sorgt für eine eindrucksvolle AtmosphäreKernel sorgt für eine eindrucksvolle Atmosphäre

Standard AW: C++ Problem mit Dateien

Woas der kennt string nich??
Haste
#include <string> und
using namespace std;
drinnen? Kann mir fast nicht vorstellen dass es ein c ohne string gibt.
Kernel ist offline   Mit Zitat antworten
Alt 15.02.2006, 20:38   #10 (permalink)
Overclocker
 
Benutzerbild von Zarniwoop
 

Registriert seit: 18.10.2004
Beiträge: 267

Zarniwoop wird schon bald berühmt werden

Standard AW: C++ Problem mit Dateien

Brauchst du noch eine Lösung oder hast dus schon gelöst/aufgesteckt?

Zarniwoop
Zarniwoop ist offline   Mit Zitat antworten
Alt 16.02.2006, 09:59   #11 (permalink)
Firmware Killer
 
Benutzerbild von Tweak-IT
 

Registriert seit: 11.03.2005
Beiträge: 4.361

Tweak-IT ist ein wunderbarer AnblickTweak-IT ist ein wunderbarer AnblickTweak-IT ist ein wunderbarer AnblickTweak-IT ist ein wunderbarer AnblickTweak-IT ist ein wunderbarer AnblickTweak-IT ist ein wunderbarer AnblickTweak-IT ist ein wunderbarer Anblick

Standard AW: C++ Problem mit Dateien

Vonwegen C kennt keine Strings das ist völlig korrekt!

Es gibt in C nicht den Datentyp String in C ist ein String immer ein Array aus Chars.

ala

char text[50];
Tweak-IT ist offline   Mit Zitat antworten
Alt 16.02.2006, 12:21   #12 (permalink)
PC Schrauber
 
Benutzerbild von Kernel
 

Registriert seit: 17.07.2005
Beiträge: 171

Kernel sorgt für eine eindrucksvolle AtmosphäreKernel sorgt für eine eindrucksvolle AtmosphäreKernel sorgt für eine eindrucksvolle Atmosphäre

Standard AW: C++ Problem mit Dateien

Japp hast recht (hab mich falsch ausgedrückt), aber er benutzt ja C++ und da sollte es String geben (mit der eingebundenen Header).
Ist sprintf im C++ nicht sogar depricated?
Hmm naja ka- meld dich mal, wenn Du das Problem lösen konntest
Kernel ist offline   Mit Zitat antworten
Alt 12.03.2006, 19:49   #13 (permalink)
Fingerabzähler
 

Registriert seit: 07.02.2006
Beiträge: 8

Littlefreddy befindet sich auf einem aufstrebenden Ast

Standard AW: C++ Problem mit Dateien

Hallo bin nun aus dem Urlaub wieder back!
Also ich werde morgen direkt mal schauen,das sprintf hat mcih neugierig gemacht *ggg*
Du hast ja da %03d drin stehen,ich denke mal das das ein Platzhalter ist,nun ich habe noch nie mit Platzhaltern gearbeitet und ich möchte gerne aus 3 Teilen diesen "Filenamen" erstellen also könnte einer von euch mir ma erklären wie genua dieser Platzhalter aufgebaut ist udn woher er weiß das er gerade diesesen String und nciht einen anderne nehmen soll,also bei mehreren Strings!
Littlefreddy ist offline   Mit Zitat antworten
Alt 12.03.2006, 20:52   #14 (permalink)
Overclocker
 
Benutzerbild von Zarniwoop
 

Registriert seit: 18.10.2004
Beiträge: 267

Zarniwoop wird schon bald berühmt werden

Standard AW: C++ Problem mit Dateien

Dieses "%03d" ist ein Formatspezifizierer(oder so ähnlich). Die Funkton kann beleibig viele Parameter aufnehmen, wobei der erste der buffer in den geschrieben werden soll und der zweite der Formatstring sein muss. Der Rest sind Variablen, die man verwenden möchte. Die mit %-Zeichen eingeleiteten Platzhalter zeigen der Funktion an, an welcher Stelle eine Variable eines bestimmten Typs soll. Unterschiedliche Zeichen bedeuten Unterschiedliches.
%c steht z.b für einen char-Buffer(string), %d für einen int-Wert oder %f für einen float-Wert. Eine Auflistung findet sich hier. Bei der Frage, welche Variable zu welchem Formatspezifikator gehört geht es einfach nach der Reihenfolge. Ein Beispiel:

(printf ist analog zu sprintf, mit dem Unterschied, dass printf eine Bildschrimausgabe macht.)
(ungetestet)

Code:
char stringbuffer1[] = "Hallo";
char stringbuffer2[] = "ich bin doof";

for(int i = 1; i < 10;i++) {
   printf( "%c, %c.\nDas sage ich jetzt zum %d. Mal\n\n", stringbuffer1, stringbuffer2, i);
}
Sollte(wenn ich nicht irgendwo was falschgemacht habe) etwa das ausgeben:

Hallo, ich bin doof.
Das sage ich jezt zum 1. Mal

Hallo, ich bin doof.
Das sage ich jezt zum 2. Mal

Hallo, ich bin doof.
Das sage ich jezt zum 3. Mal

...

Ja, ich weiß, sehr sinnvoll sind meine Sätze nicht, aber das war auch nicht der Zweck der Übung...

Man kann noch verschiedene andere Sachen machen, das %03d ist z.B. eine Integer Variable, die links mit Nullen auf drei Stellen aufgefüllt wird. Hab ich verwendet, damit dann Filenamen wie file004.jpg oder file034.jpg oder file124.jpg herauskommen.

Ich hoffe ich habe geholfen!

Zarniwoop

Geändert von Zarniwoop (12.03.2006 um 20:55 Uhr)
Zarniwoop ist offline   Mit Zitat antworten
Alt 13.03.2006, 10:23   #15 (permalink)
Fingerabzähler
 

Registriert seit: 07.02.2006
Beiträge: 8

Littlefreddy befindet sich auf einem aufstrebenden Ast

Standard AW: C++ Problem mit Dateien

AH! Okay jetzt habe ich das verstanden,DICKES THX an Zarniwoop,werde mich dann heute oder Morgen mal dran begeben werde mich dann nochmal melden und einen Bericht liefern ob es geklappt hat!
Aber schonmal im vorraus DANKE für die schnelle Hilfe
Littlefreddy ist offline   Mit Zitat antworten
Alt 14.03.2006, 10:35   #16 (permalink)
Fingerabzähler
 

Registriert seit: 07.02.2006
Beiträge: 8

Littlefreddy befindet sich auf einem aufstrebenden Ast

Standard AW: C++ Problem mit Dateien

Moin so habe es mal mit sprintf ausprobiert klappt einfach nur Klasse!! Vielen Dank!
Jetzt noch ne Frage am Rande gibt es bei C eine Funktion die die Schaltjahr Rechnung machen kann und mir direkt sagen ist das Jahr ein Schaltjahr oder nicht??
Achso und wenn ich einen File überprüfe und dieser ist nicht da,wie kann ich den dann erstellen?

vielen Dank ihr habt mir echt SEHR geholfen!
Littlefreddy ist offline   Mit Zitat antworten
Alt 15.03.2006, 14:10   #17 (permalink)
Fingerabzähler
 

Registriert seit: 07.02.2006
Beiträge: 8

Littlefreddy befindet sich auf einem aufstrebenden Ast

Standard AW: C++ Problem mit Dateien

So also das mit dem Schaltjahr und dem File erstellen habe ich nun schon hinter mich gebracht genauso wie das Wochentag bestimmen! Nun fehlt mir noch ein Algorithmus wie ich in eine geöffnete Datei ans Ende springe also mit ner Funktion am besten. Und wie kann ich einen String SO weg schrieben das der dort ein Enter hintersetzt das der den nexten Text in eine neue Zeile schreibt?
Wie kann ich denn wenn ich zum Beispiel die ersten zwei Zeichen überprüft habe eine Zeile weiter springen?
Das mit kopieren,kann ich das auch mit dem System Befehl machen? Und wie kann ich da einen String zusammenbasteln um das mit dem kopieren wieder selber zusammen bauen!

Geändert von Littlefreddy (20.03.2006 um 07:53 Uhr)
Littlefreddy ist offline   Mit Zitat antworten
Antwort

Stichworte
dateien, problem


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MKV - Dateien in AVI-Dateien umwandeln GER_J0k3r Windows & Programme 23 30.12.2009 11:17
Problem beim Kopieren und Arbeiten mit großen Dateien Webwalker Festplatten und Datenspeicher 14 29.09.2009 18:34
mmm Dateien in avi Dateien umwandeln ??? Redboomcar Windows & Programme 3 03.11.2006 17:16
WinRAR Problem.. Mehr als 2 Dateien download --> CRC Fehler bombaz Windows & Programme 2 28.07.2006 21:49
Problem mit MS OFFICE 2003 Dateien/kein öffnen mehr möglich TuneWorld.de Windows & Programme 1 02.03.2004 13:37


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr.






Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.
Impressum, Datenschutz Copyright © 1999-2015 TweakPC, Alle Rechte vorbehalten, all rights reserved