dev cpp anfänger! fehler suche :/
-
hallo,
ich bin gerade dabei ein wenig c++ zu versuchen und bin schon am verzweifeln ^^ich habe bisher nur erfahrung mit vb was das ganze nicht unbedingt erleichtert.
ich will alle ordner in einem verzeichnis auslesen, in einer messagebox anzeigen und in einem array die namen speichern!hier mein code:
#include <windows.h> #include <fstream.h> #include <iostream.h> int main() { char ordner[10]; int nr=0; WIN32_FIND_DATA daten; HANDLE h=FindFirstFile("c:\\*.*", &daten); if(INVALID_HANDLE_VALUE==h) return(1); do { // Ordner? if (daten.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) { nr = nr+1; MessageBox(NULL, daten.cFileName, "test", MB_OK); ordner[nr] = daten.cFileName; } } while(FindNextFile(h, &daten)); return 0; }ich bekomme immer den fehler
113 C:\Dev-Cpp\projects\main.cpp invalid conversion from `const char*' to `char'
(is die zeile in der in das array geschrieben wird)
ich versteh aber nich ganz wo das problem sein soll

ich hoffe mir kann jmd helfen!
mfg
-
Falsches Forum, ich verschieb' dich mal.
-
Dieser Thread wurde von Moderator/in GPC aus dem Forum Andere GUIs - Qt, GTK+, wxWidgets in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
#include <windows.h> #include <vector> #include <string> int main() { std::vector<std::string> dir; WIN32_FIND_DATA data; HANDLE hFile = FindFirstFileA("c:\\*.*", &data); if (hFile == INVALID_HANDLE_VALUE) return 0; do { // Ordner? if (data.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) { MessageBox(NULL, data.cFileName, NULL, 0); dir.push_back(std::string(data.cFileName)); } } while(FindNextFile(hFile, &data)); }...
der Fehler lag hier:ordner[nr] = daten.cFileName;... daten.cFileName ist ein char Array ... ordner an der Stelle nr aber nur noch ein char.
-
hallo,
dein Problem ist, dass "char" kein string wie in VB ist, sondern nur EIN Zeichen.
deshalb kannst du keine Zeichenkette (daten.cFileName) in einem char speichern.außerdem würde mich interessieren, wofür du fstream.h und iostream.h inkludiert hast.
ich würde dein Problem so lösen:
#include <windows.h> // Windows API eben xD #include <list> // Für std::list #include <string> // für std::string using namespace std; // damit man std:: weglassen kann // !!! wieso hast du in einem Window-Programm "main" verwendet??? int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow) { list<string> lDirectories; // Eine Liste von Zeichenketten WIN32_FIND_DATA wfd; // ... HANDLE hFind = FindFirstFile("C:\\*.*", &wfd); // Erste Datei/Ordner finden if (hFind == INVALID_HANDLE_VALUE) return -1; do { if (wfd.dwFileAttributs == FILE_ATTRIBUTE_DIRECTORY) // ist es ein Ordner? { // ja^^ string strTemp = wfd.cFileName; // den C-String in einen C++-String umwandeln lDirectories.push_back(strTemp); // der Liste hinzufügen MessageBox(GetDesktopWindow(), wfd.cFileName, "Ordner gefunden!", MB_OK|MB_ICONINFORMATION); // Ordnername ausgeben } } while (FindNextFile(hFind, &wfd)); // Nächste Datei/Ordner finden return 0; }allerdings wundere ich mich, dass ein Anfänger, der nicht einmal die C++-Grundlagen beherrscht sich gleich an der Windows-API versucht...
MfG DrakoXP
-
hm also ich hab schon einige tutorials für c++ anfänger durch und dabei gings meistens um rechnen von wegen
variable1 + variable2 = blabla
das ganze hat mich einfach gelangweilt also hab ich mir einfach ma n altes vb projekt von mir gesucht und versuch jetzt halt das ganze nachzuarbeiten ^^
learning by doing halt

ich versteh aber noch nich ganz wo dein problem is mit meinem "main" ^^
ich mein es funktioniert ja und überall im internet findet man es eigentlich so ...
fstream hab ich hinzugefügt weils anders einfach nich ging (kam immer ne fehler meldung :/)
aber danke für alles

-
hallo,
wegen der main-Funktion:
an sich ist es kein Problem (bei Dev-C++).
Allerdings ist es ein Windows-Programm und da setzt Microsft die Standards.
Und Microsoft sagt ganz klar:Microsoft schrieb:
The WinMain function is the conventional name for the user-provided entry point for a Microsoft Windows-based application.
heißt so viel:
wenn du in der Konsole arbeitest nimmst du main und wenn du mit Fenstern arbeitest nimmst du WinMain.macht zwar bei Dev-C++ keinen Unterschied, aber du kannst Probleme bekommen, wenn du das mit anderen Compilern versuchst.
bei VC++ funkioniert das definitiv nicht.und dann muss ich dir wirklich nahe legen die Grundlagen zu lernen, egal wie langweilig es ist.
Ohne das Grundwissen läufst du in der Windows-API schnell auf Grund.wenn dir der Anfängerkram zu einfach ist, kannst du ja gleich mal in die OOP reinnschnuppern.
das ist für den Anfang schon bisschen anspruchsvoller und man überhebt sich nicht gleich.
danach könntest du dir die STL (Standard Template Library) angucken.außerdem solltest du dir Type-casting mal genau angucken...
vor allem, wie man mit Zeichenketten arbeitet.MfG DrakoXP
-
macht zwar bei Dev-C++ keinen Unterschied, aber du kannst Probleme bekommen, wenn du das mit anderen Compilern versuchst.
bei VC++ funkioniert das definitiv nicht.Möp! Na aber ganz klar geht das in der Konsole ... mit VC++2003 und VC++2005 ...
-
ich weißt, dass man auch in der Konsole WinMain schreiben kann,
aber man kann bei einem Windows-Programm nicht main benutzen!