ERLEDIGT
NEIN
NEIN
ANTWORTEN
14
14
ZUGRIFFE
923
923
EMPFEHLEN
-
02.06.05 18:49 #1
- Registriert seit
- Jun 2005
- Beiträge
- 91
Hallo erst mal,
Ich brauche ganz dringend nen guten Rat. Habe Borland C++ Builder 6 und will nen prog basteln welches mir helfen soll einen haufen Datein auf einmal umzu bennen.
Das problem hierbei ist das ich zwei Informationen aus der Datei auslesen muss die dann wiederum als Teil in den neuen Dateinamen einfließen soll.
zum Bsp. org. Datei. BU_DDUA07.lis11 soll danach 200505_6111.txt heißen.
"200505" ware das Datum und 6111 wäre ne Inventurnummer zum beispiel.
Diese Beiden Info´s will ich aus der Datei BU_DDUA07.lis11 auslesen.
ich habe momentan null peilung
HILFE ich habe keine Lust ca. 3000 Datein jeden Monat per Hand umzuschreiben
Danke im vorraus
ich nehme jede Hilfe dankend an!
-
Kannst du überhaupt C++?
Du solltest mal logisch an dein Problem rangehen...so schwer ist dein Problem nämlich nicht zu lösen...
Du musst (wahrscheinlich[kann ich nich genau sagen, weil deine Beschreibung etwas mager ist]) den Ordner mit diesen Dateien auslesen und z.B. alle Dateinamen in ein Array packen.
(Also nur ein Array mit den ganzen Namen).
Dann halt jede Datei im Array auslesen und je nach Inhalt umbenennen.
Fertig!
( soviel zum logischen Ansatz
)
greetz
daddzbe inspired...simplify...
-
02.06.05 19:13 #3
- Registriert seit
- Jun 2005
- Beiträge
- 91
ersteinmal danke für die Antwort!
die grundlagen sind vorhanden soviel zu dem das ich C++ mal gelernt habe.
Folgendes Problem:
Datei 1 : BU_DDUA07.lis11 Inhalt der datei die ausgelesen werden muss: Datum 20.05.05
und Inventurnummer 6111
Datei 2 . BU_DDUA07.lis12 Inhalt der datei die ausgelesen werden muss: Datum 21.05.05
und Inventurnummer 6357
und das ganze ca. 3000 mal
so würd ich an die Sache vom logischen auch rangehen aber bei der Umsetzung fehlt mir der Durchblick sorry
-
Wie sieht denn so eine Datei "innen" aus?
greetz
daddzbe inspired...simplify...
-
02.06.05 19:23 #5
- Registriert seit
- Jun 2005
- Beiträge
- 91
eigentlich ne simple Textdatei ohne Format, ne menge Artikelnummern und so ich lade mal ne datei hoch:
http://marcaurel.ma.ohost.de/testdatei.txt
-
Hy!
Leider blockiert dein Webhoster den Zugriff auf das File, ich bekomme immer eine Fehlermeldung das das externe Linken nicht erlaubt ist.
mfg
uhu01
-
Dann lass mal "/testdatei.txt" einfach weg...dann kommst du auch zu der Datei!
greetz
daddzbe inspired...simplify...
-
Hy!
@daddz:Hatte ich schon versucht, lag aber daran das ich das Referrer Logging einschalten musste.
@marcaurel1984:Hier mal ne kurze Idee wie ich das machen würde:
- Mit findfirstfile der Reihe nach die Dateien in dem Ordner durchgehen, und z.B. in einer std::list speichern
- Vier Strings einlesen, das sind die ersten vier Wörter, sie können verworfen werden.
- Eine Zahl einlesen diese ist die Artikelnummer und muss gespeichert werden.
- Wieder zwei Strings einlesen die verworfen werden.
- Abwechselnd eine Zahl einlesen, und den Zeiger in der Datei um eine Stelle weiterschieben. Dies solange machen, bis du das ganze Datum hast.
- Mit den Erhaltenen Informationen das File umbenennen
Sollte das File immer mit "STUDS NACH WARENGRUPPEN SORTIERT " beginnen kannst du den Filepointer natürlich gleich an die richtigen Stellen setzen, ohne die Strings einzeln einzulesen. Sind es am Anfang nicht immer 4 Wörter musst du nach jedem eingelesenen String kontrollieren ob es eine Zahl ist, und diese dann speichern, dann suchst du den folgenden String "Datum" und liest das Datum wie oben beschrieben ein.
Ich hoffe ich konnte die ein wenig weiterhelfen. Wenn ich noch ein wenig genauer werden soll ein nur sagen.
mfg
uhu01Geändert von uhu01 (04.06.05 um 15:01 Uhr)
-
04.06.05 19:00 #9
- Registriert seit
- Jun 2005
- Beiträge
- 91
danke für eure Hilfe.
@uhu könntest du bitte etwas genauer werden
das war doch nen bisschen verwirrend?
mfg Marc
-
Hy!
Also etwas genauer:
Zuerst legst du einen neuer Container vom Typ std::vector an, der eine String aufnimmt.
Dann gehst du mit findfirstfile den Ordner durch und speicherst alle Dateinamen in dem std::vector ab. An dem Link oder in der MSDN findest du alles was du zu findfirstfile brauchst.Code :1
std::vector< std::string > vecFileNames
Nun gehst du in einer Schleife alle Einträge der Reihe nach durch, öffnest sie, und ließt die Daten aus.
Nun hast du alle Relevanten Daten gepeichert, und kannst mit movefile problemlos alle Dateien umbenennen.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
fstream fsFile; string strDummy; char cDummy; int iArtikelNum, iDay, iMonth, iYear; fsFile.open( "D:\\bsp.txt", ios::in); fsFile >> strDummy; fsFile >> strDummy; fsFile >> strDummy; fsFile >> strDummy; fsFile >> iArtikelNum; fsFile >> strDummy; fsFile >> strDummy; fsFile >> iDay; fsFile.read( &cDummy, 1); fsFile >> iMonth; fsFile.read( &cDummy, 1); fsFile >> iYear;
Ob das ganze so funktioniert, hängt natürlich davon ab ob die Datei immer so aussieht, u.U. musst du das ganz etwas abändern.
Sollte z.B. am Anfang immer STUDS... stehen kannst du statt den ersten fsFile << dummy; auch fsFile.sekkg( 39); schreiben.
Solltest du noch etwas Hilfe brauchen, einfach sagen.
mfg
uhu01Geändert von uhu01 (04.06.05 um 20:21 Uhr)
-
07.06.05 22:16 #11
- Registriert seit
- Jun 2005
- Beiträge
- 91
@uhu
also ich habs mal probiert aber bei mir ****ts es nicht vielleicht scheitert es auch schon beim Container anlegen.
hast du sonst nen kompletten Quelltext?
-
Hy!
Zeig mal was du schon hast, wir können dir sicher helfen!
Ich schaus mir morgen sonst mal an.
mfg
uhu01
-
Sind das immer nur einzelne Strings, durch Leerzeichen getrennt, oder sind das Datenfelder, die durch TAB's getrennt sind?
-
08.06.05 19:51 #14
- Registriert seit
- Jun 2005
- Beiträge
- 91
Es ist einfach ne TXT-Datei wo die Strings durch einfache Leerzeichen getrennt sind.
mfg marc
-
Hy!
Hier mal ne Idee die sicherlich noch verbesserungswürdig ist, aber mit deinem einen File hat sie funktioniert:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
#include <windows.h> #include <iostream> #include <vector> #include <string> #include <fstream> using namespace std; int main(int argc, char *argv[]) { WIN32_FIND_DATA fdFileData; HANDLE hFind; vector< string > vecFileNames; string strPath( "D:\\"); hFind = FindFirstFile( (strPath + "*.txt").c_str(), &fdFileData); if( hFind == INVALID_HANDLE_VALUE) { cout << "ERROR: Invalid File Handle [ERROR: " << GetLastError() << "]" << endl; return( 0); } else { do { if( fdFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) continue; vecFileNames.push_back( fdFileData.cFileName); }while(FindNextFile(hFind, &fdFileData)); FindClose(hFind); fstream fsFile; string strDummy; char cDummy, szNewFileName[20]; int iArtikelNum, iDay, iMonth, iYear; for( vector< string >::iterator itElement = vecFileNames.begin(); itElement < vecFileNames.end(); itElement++) { //string debug_1 = (strPath + (*itElement)); fsFile.open( (strPath + (*itElement)).c_str(), ios::in); fsFile >> strDummy; fsFile >> strDummy; fsFile >> strDummy; fsFile >> strDummy; fsFile >> iArtikelNum; fsFile >> strDummy; fsFile >> strDummy; fsFile >> iDay; fsFile.read( &cDummy, 1); fsFile >> iMonth; fsFile.read( &cDummy, 1); fsFile >> iYear; fsFile.close(); sprintf( szNewFileName, "%s%02d%02d_%d.txt", strPath.c_str(), iYear, iMonth, iArtikelNum); MoveFileEx( (strPath + (*itElement)).c_str(), szNewFileName, MOVEFILE_REPLACE_EXISTING); } return (1); } }
Achja, der Code ist mir Vorsicht zu verwenden, ich hab ihn ja erst mit einem File probieren können.
Aber zeig mal deinen Code her, werden den Fehler schon finden!
mfg
uhu01Geändert von uhu01 (09.06.05 um 08:39 Uhr)
Ähnliche Themen
-
Brauche Eure Hilfe und eure Vorschläge
Von kirka im Forum PHPAntworten: 6Letzter Beitrag: 11.09.10, 12:01 -
Brauche eure Hilfe...
Von Meccan im Forum SmalltalkAntworten: 4Letzter Beitrag: 28.11.05, 13:40 -
brauche eure Hilfe
Von trucidare im Forum PHPAntworten: 5Letzter Beitrag: 01.02.05, 21:32 -
Brauche eure Hilfe
Von Magic-Frog im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 22.07.04, 03:23 -
Brauche mal eure Hilfe !
Von Manni-das-Mammut im Forum PhotoshopAntworten: 9Letzter Beitrag: 16.10.03, 22:58





Zitieren
Login






