2 CSV Dateien Datensätze Vergleichen und auf Konsole ausgeben
-
@apussaih Weiß nicht. Hab mir das alles noch nicht richtig angeguckt. Ich esse jetzt erstmal...
Du solltest aber oben erstmal die BOM-Datei mit der korrekten ersetzen. Sonst kommen wir hier eh nicht weiter....
Du bist jetzt aber nicht unter Zeitdruck, oder? Sowas wie: Muss morgen/nächste Woche abgegeben werden? Ich würde vorschlagen es erstmal so zum laufen zu bekommen und dann kann man das Schritt für Schritt umbauen. Ist vom Lerneffekt auch besser... Ich will das Projekt hier gleich in den QtCreator einpflegen, dafür brauche ich (und alle anderen) die korrekte Datenbasis. Wie gesagt, bis jetzt nur überflogen...
-
@apussaih sagte in 2 CSV Dateien Datensätze Vergleichen und auf Konsole ausgeben:
void getData(std::string line) { int start = 0; int end = 0; int i = 0; end = line.find(';', start + 1); int stringlaenge = end - start; std::string daten = line.substr(start, stringlaenge); std::cout << daten << " BOM: " << daten << std::endl; bom[i].setDaten(daten); start = end + 1; }
Das ist meine Version der Funktion die Du meintest?
Warum übergibst du die "line" als kopie?
"start" wird sich nur innerhalb dieser funktion ändern. Du musst das veränderte Start, bzw. die Anzahl an Zeichen, die du in der Funktion gelesen hast, an die aufrufende Funktion ( deine while-Schleife ) zurückgeben, damit nicht mit jedem aufruf wieder von vorn angefangen wird zu lesen....
-
@dirkski
Kein Zeitdruck bis jetzt. Kann man auch als schlechtes Beispiel hernehmen. Daraus lern ich ja auch was. Wie man es nicht! machen sollte. Guten Appetit!
Und danke erstmal für die Hilfe an alle!
-
Dieser Beitrag wurde gelöscht!
-
@apussaih sagte in 2 CSV Dateien Datensätze Vergleichen und auf Konsole ausgeben:
std::cout << " Liste: " << daten << std::endl; bom[i].getDaten(); start = end + 1; }
In deiner letzten geposteten void getData()-Funktion kommt eine Fehlermeldung:
../main.cpp: In Funktion »void getData(std::__cxx11::string)«: ../main.cpp:171:12: Fehler: »__gnu_cxx::__alloc_traits<std::allocator<dataset>, dataset>::value_type« {aka »class dataset«} hat kein Element namens »getDaten«; meinten Sie »getName«? bom[i].getDaten(); ^~~~~~~~
Der besagt das deine Klasse dataset (Besser wäre Dataset weil die meisten bei Klassen Großschreibung bevorzugen, ist Geschmacksache) keine member-function getDaten besitzt. Hast Du die evtl. schon geschrieben und die Klasse ganz oben ist nicht mehr aktuell?
Ich habe heute nicht so viel Zeit werde mich aber die Tage mehr mit beschäftigen...
-
@apussaih Was bedeutet Gesellenprüfung? Machst Du irgendwas im Handwerk und das Programmieren ist ein Zusatz (Sieht ja nach irgendwas mit Elektonik aus)?
Aber Elektronik ist ja auch Industrie. Mechatroniker?Oder bist du Azubi als Fachinformatiker und machst hauptsächlich programmieren?
Also welchen Stellenwert hat das Programmieren in deiner Ausbildung?
Ist das evtl. nur ein Nebenfach? Hilft uns evtl. wie weit wir bei der Hilfe ausholen müssen und wie „gut“ das Ergebnis am Ende ist.
-
@It0101 sagte in 2 CSV Dateien Datensätze Vergleichen und auf Konsole ausgeben:
@apussaih sagte in 2 CSV Dateien Datensätze Vergleichen und auf Konsole ausgeben:
void getData(std::string line) { [...] }
Das ist meine Version der Funktion die Du meintest?
Warum übergibst du die "line" als kopie?
Naja, er sagt das er noch Probleme mit Funktionen und speziell Parametern hat,. Ich vermute er kennt den Unterschied zwischen der Übergabe per Wert und Referenz noch nicht.
-
@apussaih
Sinnvoll wäre erstmal dass du deinen Quellcode so weit reduzierst, dass ein bestimmtes Problem, welches dir Sorgen bereitet immer noch auftritt. Kaum jemand liest sich jedesmal 200 Zeilen Quellcode durch. Wäre dein Problem anhand von weniger Quellcode nachvollziehbar, könnte man dir vermutlich effizienter helfenVorschlag:
Zum Fehlerfinden musst du auch nicht jedes mal die komplette Datei einlesen.
Du kannst testweise auch mal sowas hier machen:std::string TestZeile = "BU1 CON_BLY6_7p BLY 6 SMD/ 20 BLY6_7p\n"; getData( TestZeile );
Und dann bastelst du z.B. erstmal an der "getData"-Funktion. Und mit anderen Modulen machst du das genauso.
-
Dieser Beitrag wurde gelöscht!
-
Dieser Beitrag wurde gelöscht!
-
@apussaih sagte in 2 CSV Dateien Datensätze Vergleichen und auf Konsole ausgeben:
Es reicht mir auch vorerst ein Pseudocode
Du beschreibst den Vorgang doch schon.
@apussaih sagte in 2 CSV Dateien Datensätze Vergleichen und auf Konsole ausgeben:
Stimmt in dem Datensatz ein Wert/ Eigenschaft überein, soll noch ein 2.Wert aus dem Datensatz überprüft werden. Stimmt auch dieser überein, dann soll der Datensatz aus der Lagerdatei ausgegeben
Wenn A.e1 == B.e1 und A.e2 == B.e2 dann Ausgabe B
-
Dieser Beitrag wurde gelöscht!
-
@apussaih sagte in 2 CSV Dateien Datensätze Vergleichen und auf Konsole ausgeben:
@manni66 Problem. Was in BOM-Liste unter Value steht, steht in LAGER-Liste unter Namen. Das ist mein Problem. Oder übersehe ich hier was ganz triviales?
Wenn A.value == B.namen und A.e2 == B.e2 dann Ausgabe B
Die Strings aus BOM-Liste müssen in LAGER-Liste gefunden werden können. Auch wenn es nur ein Teil des Strings in LAGER-Liste ist.
Du wirst hier nicht weiterkommen, wenn du solche unverständlichen Sätze schreibst.
-
Dieser Beitrag wurde gelöscht!
-
@apussaih
Du warst doch auf dem richtigen Weg, mit deinem Ansatz, erstmal alle Daten in vectoren ( oder andere Container ) zu laden. Warum weichst du jetzt davon ab?
-
Dieser Beitrag wurde gelöscht!
-
@apussaih sagte in 2 CSV Dateien Datensätze Vergleichen und auf Konsole ausgeben:
@It0101 weil ich eigentlich gar nicht weiß was ich mache.
Deswegen hatte ich dir ja geraten dein großes Problem in viele kleine zu unterteilen ( z.B. das parsen einzelner Daten aus einer Zeile Text ) und diese kleinen Probleme am Ende zu einer großen Lösung zusammenzusetzen.
Das ist am Anfang einfach nicht möglich, ein ganzes Problem detailliert im Kopf zu lösen und dann nur noch den Quellcode in die Tastatur zu hauen.
-
@apussaih sagte in 2 CSV Dateien Datensätze Vergleichen und auf Konsole ausgeben:
Ich bräcuhte jemanden der mir das mal zeigt. So kapier ich es am Besten. Aber hier wird so oft rumgeschrieben,
Hier ist ein Forum, in dem konkrete Fragen beantwortet werden können. Deine Ausbildung kann hier hingegen nicht stattfinden.