Zeichenlängen in .txt erkennen
-
Könnte man das gewünschte Verzeichnis nicht direkt auf die *.exe ziehen? Zumindest mit Dateien funktioniert dies (natürlich nur, wenn die *.exe dann auch was mit den Dateien anfangen kann).
-
Belli schrieb:
Könnte man das gewünschte Verzeichnis nicht direkt auf die *.exe ziehen? Zumindest mit Dateien funktioniert dies (natürlich nur, wenn die *.exe dann auch was mit den Dateien anfangen kann).
Ne das geht leider nicht.
Es handelt sich bei den Ordnern um 7 TB Ordner ^^
Da würde das Ziehen länger dauern als die eigentliche Funktion des ProgrammsIch habe mittlerweile (noch mal zusammenfassend) ein paar Ideen entwickelt:
-> man schreibt eine BATCH-Datei, die den Pfad an das Programm übergibt. Einstellen kann der User den Pfad "in" der BATCH-Datei.
-> Man entwickelt eine GUI, in der man den Pfad des Verzeichnisses auswählt, dieser wird dann übergeben und zum String cmnd mittels
strcat
zugegeben (mir fällt grad kein besseres Wort ein). Somit stellt der User den Pfad innerhalb einer GUI ein (ohne schreiben, Klicki-Klicki versteht sich :D).
Das sind meine Ideen, die BATCH könnte ich noch selber schreiben, aber die Schnittstelle ist etwas problematisch. Man müsste den Pfad ja zurückgeben, aber wie ich das aus einer BATCH mache, weiß ich nich. (vllt mit fopen "r"? ... Nur ne Vermutung
)
einen guten morgen wünscht
Lordakius
-
Lordakius schrieb:
Belli schrieb:
Könnte man das gewünschte Verzeichnis nicht direkt auf die *.exe ziehen? Zumindest mit Dateien funktioniert dies (natürlich nur, wenn die *.exe dann auch was mit den Dateien anfangen kann).
Ne das geht leider nicht.
Es handelt sich bei den Ordnern um 7 TB Ordner ^^
Da würde das Ziehen länger dauern als die eigentliche Funktion des ProgrammsDa wird nur der Ordnername übergeben (wieviel Zeichen mögen das maximal sein?
), keine Dateien kopiert.
-
Belli schrieb:
Könnte man das gewünschte Verzeichnis nicht direkt auf die *.exe ziehen?
Jau, geht, gerade mal mit einem kleinen Beispielprogramm getestet ...
-
Nein, mir wurde das anders erklärt:
Der Ordner muss initialisiert werden, damit das Programm etwas damit anfangen kann. Da der Ordner entsprechend groß ist, dauert die Initialisierung entsprechend lange.
Habe die Batch (bzw *.ini ^^) jetz geschrieben. (sieht mir mehr nach einer header aus ... aber gut was weiß ich schon :D)
char *getPath() { static char Path[] = { "C:\\Users\\Lordakius\\Desktop\\Informatik"}; return Path; }
#include "Pfad.ini" //[...] int main(/*int argc, char **argv*/) { char cmnd[1000] = "dir /s /b /ad "; strcat(cmnd, getPath()); char eingabe; //Hier ist alles noch wie vorher :)
Also er machts auf jeden fall
Mit ner GUI wäre es natürlich benutzerfreundlicher, aber damit komme ich jetzt noch nicht klar.
Aber mal nebenbei: in einer csv (oder cvs?) Datei in Excel entspricht ein [;] einem Spaltensprung (nennt man das so?). Nun wäre es noch nice, wenn man im Pfad-String (bei der Ausgabe) alle \ durch ; ersetzt.
Meiner Meinung sollte das einfach über eine Funktion gehen, die in der text-Datei (bzw csv) die entsprechenden Zeichen ersetzt. Ich hab da an stream-Funktionen gedacht gedacht (ist ja mittlerweile nicht mehr komplett neu das Thema :D).Danke an Alle für die bisherige Hilfe
Beste Grüße
Lordakius
-
Lordakius schrieb:
Nein, mir wurde das anders erklärt:
Der Ordner muss initialisiert werden, damit das Programm etwas damit anfangen kann. Da der Ordner entsprechend groß ist, dauert die Initialisierung entsprechend lange.
Das eine hat mit dem anderen nicht das Geringste zu tun. Irgendwie muss Dein Programm ja an die Information kommen, welchen Ordner es bearbeiten soll.
Und den entsprechenden Ordner mit der Maus auf die exe-Datei Deines Programms zu ziehen, ist da eine sehr einfache Möglichkeit und kommt von der Benutzerfreundlichkeit schon mal in die Nähe eines mit einer GUI ausgestatteten Programmes, welches Du mit Deinen Kenntnissen vermutlich nicht hinbekommen wirst.
-
Belli schrieb:
Lordakius schrieb:
Nein, mir wurde das anders erklärt:
Der Ordner muss initialisiert werden, damit das Programm etwas damit anfangen kann. Da der Ordner entsprechend groß ist, dauert die Initialisierung entsprechend lange.
Das eine hat mit dem anderen nicht das Geringste zu tun. Irgendwie muss Dein Programm ja an die Information kommen, welchen Ordner es bearbeiten soll.
jau, dass mach ich ja mit der Batch Datei. kannst du mir erklären was du mit deinem ersten Satz meinst? Wie gesagt, kenn mich in dem Bereich nicht so richtig aus.
Und den entsprechenden Ordner mit der Maus auf die exe-Datei Deines Programms zu ziehen, ist da eine sehr einfache Möglichkeit und kommt von der Benutzerfreundlichkeit schon mal in die Nähe eines mit einer GUI ausgestatteten Programmes, welches Du mit Deinen Kenntnissen vermutlich nicht hinbekommen wirst.
Womit fängt denn so eine GUI an? Hab was gehört von wegen Frameworks ...
was muss ich mir anschauen, damit ich lerne wie eine GUI aufgebaut ist?
Kannste mir was empfehlen?#edit:
FILE *f = _popen(cmnd, "r");
Hab ich da was falsch gemacht? er gibt jetzt nicht das aus was in cmnd steht (bzw in cmnd steht ja der cmd befehl + pfad) sondern was auf meinem desktop is.
Kann auch gerne nochmal den kompletten Code posten, wollte nur nich das gesamte fenster ausfüllen^^##Edit:
Anscheinend funktioniert das Programm außerhalb meines Release-Ordners nicht ordnungsgemäß. Im Release Ordner macht das Programm genau was es soll. Ich glaube die Verknüpfung zur path.ini ist noch fehlerhaft. Die path.ini muss doch eigentlich im selber Verzeichnis sein.
lg Lordakius
-
Das mit der Batch-Datei ist umständlich und was Du da gepostet hast:
char *getPath() { static char Path[] = { "C:\\Users\\Lordakius\\Desktop\\Informatik"}; return Path; }
hat überhaupt nix mit einer Batch-Datei zu tun.
Eine Lösung mit einer Batch-Datei macht bei Deinem Problem nur dann Sinn, wenn immer wieder derselbe Ordner verarbeitet werden soll. Dann aber könntest Du den auch direkt im Programm verdrahten.
Bei wechselnden Ordnern macht es Sinn, diesen einfach als Aufrufparameter mitzugeben. Und stattdessen kann man dann auch einfach den Ordner auf die exe-Datei ziehen.
Bevor Du Dich mit GUI-Programmierung beschäftigst, solltest Du erst mal einige Grundlagen lernen.
-
Hast du auch auf
if(argc > 1)
verbessert?
Mach mal
#include <stdio.h> int main(int argc, char **argv) { int i; for(i=0;i<argc;i++) printf("%d. Argument: %s\n", argv[i]); printf("Ende. Bitte Entertaste druecken\n"); getch(); return 0; }
Und zieh dann einen Ordner auf das Icon von der Exe
Was passiert?
-
Belli schrieb:
Das mit der Batch-Datei ist umständlich und was Du da gepostet hast:
Eine Lösung mit einer Batch-Datei macht bei Deinem Problem nur dann Sinn, wenn immer wieder derselbe Ordner verarbeitet werden soll. Dann aber könntest Du den auch direkt im Programm verdrahten.
Bei wechselnden Ordnern macht es Sinn, diesen einfach als Aufrufparameter mitzugeben.Jetz haste mich dran erinnert, was ich eigentlich machen wollte
wollte die batch (oder ini ... oder was-auch-immer) so schreiben, dass die .exe mit einem pfad als aufrufparameter gestartet wird. Dieser Pfad soll dann vom Benutzer in der datei geändert werden.Ich weiß, das ist umständlich und nicht sehr galant (s.O).
Aber ist halt das, was ich mit meinen Fähigkeiten hinkrieg.Belli schrieb:
Und stattdessen kann man dann auch einfach den Ordner auf die exe-Datei ziehen.
Kommt nicht infrage. (s.O)
Belli schrieb:
Bevor Du Dich mit GUI-Programmierung beschäftigst, solltest Du erst mal einige Grundlagen lernen.
Bin ich grad bei, gib mir doch wenigstens die Möglichkeit da mal reinzuschnuppern ...
-
Lordakius schrieb:
Aber ist halt das, was ich mit meinen Fähigkeiten hinkrieg.
Belli schrieb:
Und stattdessen kann man dann auch einfach den Ordner auf die exe-Datei ziehen.
Kommt nicht infrage. (s.O)
Das heißt, Du kriegst es mit Deinen Fähigkeiten nicht hin, einen Ordner auf die exe-Datei zu ziehen?
Lordakius schrieb:
Belli schrieb:
Belli schrieb:
Bevor Du Dich mit GUI-Programmierung beschäftigst, solltest Du erst mal einige Grundlagen lernen.Bin ich grad bei, gib mir doch wenigstens die Möglichkeit da mal reinzuschnuppern ...
Ich halte Dich nicht davon ab. Aber ich werde auch nicht versuchen, Dir den dritten Schritt vor dem ersten beizubringen. Das würde mich zuviel Nerven kosten ... ich merke das schon in diesem Thread hier ...
-
Belli schrieb:
Lordakius schrieb:
Aber ist halt das, was ich mit meinen Fähigkeiten hinkrieg.
Belli schrieb:
Und stattdessen kann man dann auch einfach den Ordner auf die exe-Datei ziehen.
Kommt nicht infrage. (s.O)
Das heißt, Du kriegst es mit Deinen Fähigkeiten nicht hin, einen Ordner auf die exe-Datei zu ziehen?
War vllt blöd ausgedrückt ... ich versuchs nochmal:
Ich werde das Programm nicht nutzen. Die Person, die das haben möchte, will es halt nicht reinziehen. SO ist das und damit muss ich umgehen.Belli schrieb:
Ich halte Dich nicht davon ab. Aber ich werde auch nicht versuchen, Dir den dritten Schritt vor dem ersten beizubringen. Das würde mich zuviel Nerven kosten ... ich merke das schon in diesem Thread hier ...
Da hast du auch recht. Ich erwarte auch nicht dass du mir alles erklärst (find ich schon super, dass du mir überhaupt hilfst.)
Aber du möchtest mir doch nicht sagen, dass der erste Schritt das Reinziehen eines Verzeichnisses in eine .exe ist?Ich weiß, dass du mehr Erfahrung hast als ich. Deshalb bitte ich Dich, mich aufzuklären: Gehe ich das ganze Projekt falsch an? Habe kaum Erfahrung in der Software-Entwicklung und bin deswegen auf Hilfe angewiesen. (Natürlich könnte ich auch auf die harte Tour das komplette Projekt selbstständig machen, aber ich hatte diesmal ein schmales Zeitfenster.)
Ich befasse mich (ernsthaft) erst seit ein paar Monaten damit und muss nebenbei noch zur Schule/Uni gehen und mich um den Kram kümmern. Das ist alles nicht so leicht (aber wem erzähl ich das? Du hast das ja schon hinter dir, oder?)
Deshalb kann ich nur auf die Geduld von Erfahrereren (), wie dir, hoffen.
Nun, wieder zurück zum Thema. Bitte.
DirkB schrieb:
Hast du auch auf
if(argc > 1)
verbessert?
Den teil hab ich gar nicht mehr bei mir drin.
-
DirkB schrieb:
Mach mal
#include <stdio.h> int main(int argc, char **argv) { int i; for(i=0;i<argc;i++) printf("%d. Argument: %s\n", argv[i]); printf("Ende. Bitte Entertaste druecken\n"); getch(); return 0; }
Und zieh dann einen Ordner auf das Icon von der Exe
Was passiert?
Er gibt mir beim Kompilieren folgenden Fehler:
`getch' undeclared (first use this function)
-
Ich hab extra nachgesehen und dann doch nicht geändert. schäm
Die funktion heißtgetchar();
-
DirkB schrieb:
Ich hab extra nachgesehen und dann doch nicht geändert. schäm
Die funktion heißtgetchar();
Ich bin der Letzte, der dich dafür verurteilen wird
11013901. Argument: (x)|pfeil nach oben|umgedrehtes ? //(x) merkwürdiges Symbol | nicht beachten, das steht alles ohne leerzeichen 11013944. Argument: (x)|pfeil nach oben|umgedrehtes ? //Ausgenommen von der Zahl ist alles gleich.
Sonst passiert nix. Kann mit der Ausgabe nich wirklich was anfangen
-
Das kommt davon, wenn man es nur aus dem Kopf macht.
printf("%d. Argument: %s\n", i, argv[i]); // Das i hat gefehlt
-
Lordakius schrieb:
War vllt blöd ausgedrückt ... ich versuchs nochmal:
Ich werde das Programm nicht nutzen. Die Person, die das haben möchte, will es halt nicht reinziehen. SO ist das und damit muss ich umgehen.Die Person möchte lieber jedes Mal zuerst in einer Batch-Datei rumeditieren, um den richtigen Ordner zu verarbeiten?
Fällt mir schwer zu glauben ...Lordakius schrieb:
Da hast du auch recht. Ich erwarte auch nicht dass du mir alles erklärst (find ich schon super, dass du mir überhaupt hilfst.)
Aber du möchtest mir doch nicht sagen, dass der erste Schritt das Reinziehen eines Verzeichnisses in eine .exe ist?Nee, natürlich nicht!
Lordakius schrieb:
Deshalb bitte ich Dich, mich aufzuklären: Gehe ich das ganze Projekt falsch an?
Vielleicht habe ich Dein 'Projekt' einfach nur nicht verstanden. Ursprünglich ging es mal um ein Programm, das eine Datei einlesen sollte, und die Länge der einzelnen Zeilen überprüfen soll?
Das würde ich kaum als Projekt bezeichnen, das ist eine Aufgabe für die Frühstückspause ...Und solange das bei Dir anders ist, solltest Du Dich nicht mit GUI beschäftigen. Meiner Einschätzung nach benötigst Du außerdem für die meisten GUI-Libraries C++. Auf Anhieb fällt mir nur die WinAPI ein, die allein mit C - Kenntnissen auskommt.
-
DirkB schrieb:
Das kommt davon, wenn man es nur aus dem Kopf macht.
printf("%d. Argument: %s\n", i, argv[i]); // Das i hat gefehlt
@Lord:
Solange Du solche Kleinigkeiten nicht selbstständig erkennen/verbessern kannst, fehlen Dir definitiv jede Menge Grundlagenkenntnisse.
Diese wirst Du kaum hier im Forum bekommen.Ich sage das nicht, um Dich zu ärgern! Ist Erfahrung. Schriebst Du nicht irgendwo, Du seist 15 Jahre alt? Dann vertrau mir ruhig mal. Ich habe einige Jahrzehnte mehr Erfahrung.
-
Belli schrieb:
Lordakius schrieb:
War vllt blöd ausgedrückt ... ich versuchs nochmal:
Ich werde das Programm nicht nutzen. Die Person, die das haben möchte, will es halt nicht reinziehen. SO ist das und damit muss ich umgehen.Die Person möchte lieber jedes Mal zuerst in einer Batch-Datei rumeditieren, um den richtigen Ordner zu verarbeiten?
Fällt mir schwer zu glauben ...Ja, fiel mir auch schwer, aber ich muss mich an die Vorgaben halten^^
Lordakius schrieb:
Deshalb bitte ich Dich, mich aufzuklären: Gehe ich das ganze Projekt falsch an?
Vielleicht habe ich Dein 'Projekt' einfach nur nicht verstanden. Ursprünglich ging es mal um ein Programm, das eine Datei einlesen sollte, und die Länge der einzelnen Zeilen überprüfen soll?
Das würde ich kaum als Projekt bezeichnen, das ist eine Aufgabe für die Frühstückspause ...[/quote]war es vllt mal, aber mittlerweile ist es doch etwas komplex(er) geworden und ging für mich in Bereiche, die ich mir noch nie angesehen habe (meine damit die stream funkionen).
Und das Ursprungsprojekt war ja eigentlich auch eine Teilaufgabe.
Belli schrieb:
Und solange das bei Dir anders ist, solltest Du Dich nicht mit GUI beschäftigen. Meiner Einschätzung nach benötigst Du außerdem für die meisten GUI-Libraries C++. Auf Anhieb fällt mir nur die WinAPI ein, die allein mit C - Kenntnissen auskommt.
Danke
War der eine Satz jetzt so schwer? ^^
(verstehe natürlich was du meinst und will dich hier nicht überstrapazieren.DirkB schrieb:
Das kommt davon, wenn man es nur aus dem Kopf macht.
printf("%d. Argument: %s\n", i, argv[i]); // Das i hat gefehlt
0.Argument: "Pfad, wo die .exe steht" 1.Argument: "Pfad des verzeichnisses, das ich reingezogen hab"
Nett, aber nicht das was ich brauche. Sehe auch keine Möglichkeit, dass man alle Unterordner ausgibt. Es fehlen auch die Pfadlängen. (Pfadlänge wäre ja wieder strlen).
Wäre vllt ein sinnvoller Ansatz gewesen, aber beim jetzigen Stand würde ich doch nur wieder von vorne anfangen.Wenn ich in einer implementierten Datei (path.ini) die function getPath() geschrieben habe, wo muss sich diese path.ini dann befinden, damit mein Programm sich auf den eingetragenen Pfad beziehen kann?
Implementierung in *.c
#include "path.ini"
Inhalt von path.ini
char *getPath() { static char Path[] = { "C:\\Users\\Lordakius\\Desktop\\Informatik"}; return Path; }
Aufruf von path.ini bzw getPath()
char cmnd[1000] = "dir /s /b /ad "; strcat(cmnd, getPath());
hab schon ausprobiert die path.ini ins selbe verzeichnis zu stecken bringt aber nix
#edit: (glatt was vergessen :D)
FILE *f = _popen(cmnd, "r");
lg Lordakius
-
Belli schrieb:
DirkB schrieb:
Das kommt davon, wenn man es nur aus dem Kopf macht.
printf("%d. Argument: %s\n", i, argv[i]); // Das i hat gefehlt
@Lord:
Solange Du solche Kleinigkeiten nicht selbstständig erkennen/verbessern kannst, fehlen Dir definitiv jede Menge Grundlagenkenntnisse.
Diese wirst Du kaum hier im Forum bekommen.Ich hätte den Fehler erkannt. Problem war, dass ich zunächst nicht verstanden hab, was der Sinn des Programms war (da meine Konzentration nicht vollständig auf den Quellcode gerichtet war
)
Belli schrieb:
Ich sage das nicht, um Dich zu ärgern! Ist Erfahrung. Schriebst Du nicht irgendwo, Du seist 15 Jahre alt? Dann vertrau mir ruhig mal. Ich habe einige Jahrzehnte mehr Erfahrung.
Und dafür danke ich *Dir
Wie gesagt, ich bin gerade in der Phase, mir die Grundlagen anzueignen.*Ich las einen Thread über die Rechtschreibung in Foren und ihrer Gewichtung als Indikator für Faulheit (oder so ähnlich) und dass du besonders auf Rechtschreibung/Großschreibung achtest. Aber seit wann schreibt man die Personalpronomen 2.Singular groß? oder hab ich zu dem Zeitpunkt im Grammatikunterricht geschlafen?
Grundsätzlich hab ich nix gegen, aber ich komm mir iwie so komisch vor ... Ist ein ganz anderes Gefühl ... kanns nich so richtig erklären