Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Zitat von »"$nooc"«
naja.. wenn ich das per variable übergebe würde es ja auf den stack kopiert werden oder? und am heap hat man schnelleren zugriff (nat. is performance egal bei mir, aber liege ich da falsch?)
Zitat von »"$nooc"«
wieso muss ich nichts machen bei fstream? wozu gibts dann die funktion close()?
Zitat von »"$nooc"«
und dann frag ich mich, wieso bekomme ich irgendwann nen error bei file.good().. nur weil ich zb was ausgelesen hab gibt mir good() auf einmal false ..
Zitat von »"$nooc"«
jetzt im moment hab ich ein lustiges problem..
ich lese eine datei mit der funktion _Read_s() aus..
ich übergebe der die größe des buffers, aber ausgeben tut er mir einiges mehr.. wenn ich size - 1 gebe, dann gibt er mir genau die richtige länge (minus 1 zeichen) aus
bsp:
f._Read_s(buffer, size, size); // size is bei mir 16
ausgabe: this is one lineþþþþþ♣♣♣♣
wenn ich mach
f._Read_s(buffer, size, 15);
dann ausgabe: this is one lin
check ich nicht ..
Zitat von »"$nooc"«
mit der funktin FindFirstFile() bekomme ich zwar ein handle auf die erste datei im verzeichnis, aber ich finde keine funktion die als parameter ein handle übernimmt und die entsprechende datei löscht (falls es sowas überhaupt gibt)..
und ja an std::remove hab ich schon gedacht, aber für die bräuchte ich sowas wie ein sting array welches mir die dateien aufzeigt, aber ich weiss leider nicht wie ich an die namen der dateien rankomme..
C-/C++-Quelltext |
|
1 2 3 4 |
HANDLE FindFirstFile( LPCTSTR lpFileName, LPWIN32_FIND_DATA lpFindFileData ); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
// The FindNextFile function continues a file search from a previous call to the FindFirstFile or FindFirstFileEx function.
BOOL FindNextFile(
HANDLE hFindFile,
LPWIN32_FIND_DATA lpFindFileData
);
|
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
// The FindClose function closes a file search handle opened by the FindFirstFile, FindFirstFileEx, or FindFirstStreamW function.
BOOL FindClose(
HANDLE hFindFile
);
|
C-/C++-Quelltext |
|
1 2 3 4 |
// The WIN32_FIND_DATA structure describes a file that the FindFirstFile, FindFirstFileEx, or FindNextFile functions find. typedef struct _WIN32_FIND_DATA { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwReserved0; DWORD dwReserved1; TCHAR cFileName[MAX_PATH]; TCHAR cAlternateFileName[14]; } WIN32_FIND_DATA, *PWIN32_FIND_DATA, *LPWIN32_FIND_DATA; |
Zitat von »"$nooc"«
edit:
@ David_pb
ich weiss ja dass meine ganze fragerei nervt, aber zum beispiel so sachen wie die aussage: referenzen sind zeigen vorzuziehn...
weder weiss ich warum, noch woher ich mir solche informationen holen kann. also woher weisst DU das? und kannst du mir auch sagen wieso das so ist, und evtl. wie ich auch sowas selbst draufkomme? manche dinge kann ich mir ja aus der msdn holen, aber meistens scheitere ich weil ich gewisse dinge einfach nicht weiss
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
hSearch = FindFirstFile(TEXT("*.*"), &FileData); if(hSearch == INVALID_HANDLE_VALUE) { return; } while(hSearch != INVALID_HANDLE_VALUE) { // ... std::wcout<<FileData.cFileName; // ... } |
C-/C++-Quelltext |
|
1 |
//...
|
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 |
hSearch = FindFirstFile(TEXT("*.*"), &FileData); if(hSearch == INVALID_HANDLE_VALUE) { return; } while(hSearch != INVALID_HANDLE_VALUE) { std::wcout<<FileData.cFileName; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Find the first file in the directory. hFind = FindFirstFile(DirSpec, &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { _tprintf (TEXT("Invalid file handle. Error is %u.\n"), GetLastError()); retval = (-1); } else { _tprintf (TEXT("First file name is: %s\n"), FindFileData.cFileName); |
Zitat von »"$nooc"«
also mehr zeilen stehn da nicht..
C-/C++-Quelltext |
|
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 |
#include <windows.h> #include <tchar.h> float FormatFileSize( __int64 value, char*& unit ) { static const char* values[] = { "B ", "kB", "MB", "GB", "TB" }; int i = 0; long double v = ( long double )value; while ( v > 1024 ) { v *= 0.0009765625; ++i; } return unit = i > ( sizeof( values ) / sizeof( values[ 0 ] ) ) ? "n/a" : values[ i ], ( float )v; } int main() { WIN32_FIND_DATA data; HANDLE handle; if ( ( handle = FindFirstFile( "*", &data ) ) != INVALID_HANDLE_VALUE ) { int files = 0; int directories = 0; do { char* unit = ""; float filesize = FormatFileSize( ( ( data.nFileSizeHigh << 32 ) | data.nFileSizeLow ), unit ); bool isDirectory = ( data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) != 0; if ( isDirectory ) ++directories; else ++files; printf( "%s %8.3f %s %s\n", isDirectory ? "<DIR>" : " ", filesize, unit, data.cFileName ); } while ( FindNextFile( handle, &data ) ); printf( "%d Datei(en)\n%d Verzeichnis(se)\n", files, directories ); FindClose( handle ); } else printf( "Fehler %d", GetLastError() ); } |
Werbeanzeige