000
24.06.2004, 13:33 Uhr
Puschel
Dr. med. Dipl. Prof. Virus
|
Also ich benutze de C++ builder Ver. 6 von Borland auf dem BS Win2000Pro. Hab folgendes Problem bei meinem Program sollen Lieferantendaten ausgelesen werden. Die Namen der Lieferanten werden aus einer INI-Datei in eine Listbox gelesen. die daten zu den Lieferanten stehen auch in dieser INI. Das auslesen und konvertieren soll in einer Schleife passieren. Es wird nur das ausgeesen werden was auch makiert ist. z.B.: wenn Lieferant x makiert ist sollen auch nur die Daten von Lieferant x ausgelesen und konvertiert werden. Man kann auch mehrere Lieferanten makieren, was zur Folge hat das diese Daten dann jeweils nacheinander ausgelesen werden. Mein Quelltext sieht so aus
C++: |
//Variablendeklaration int i; AnsiString LieKen,LieNr,Suchbegriff,HerstArtNr; AnsiString one="þaa",two="þab",three="þad",four="þaf",fife="þag",six="þ012",seven="þ017",eight="þ01",nine="þ03"; AnsiString Satzkennzeichen="þSKZ"; AnsiString Datenbank="þDBK32"; AnsiString Uebernahme="þUEBER"; AnsiString uebernommen="þN"; AnsiString Verarbeitungsart="þVART"; AnsiString Verarbeitungsart1="þ0";
//Abfrage ob Item ausgewählt ist if(auswahl->Selected[int(auswahl->Items)]==true) { //Anzeigen der Daten in dem Memo meldung->Lines->Add(DateToStr(Date())+" "+TimeToStr(Time())); meldung->Lines->Add("Konvertierung gestartet"); //Abfrage ob ausgewählte Datei vorhanden ist if(FileExists(Config->ReadString("Maxdata","Importdatei",""))) { //Auslesen von Lieferantenspezifischen Dateien LieKen=Config->ReadString("Maxdata","Lieferanten-Kennung",""); LieNr=Config->ReadString("Maxdata","Lieferanten-Nummer",""); Memo1->Lines->LoadFromFile(Config->ReadString("Maxdata","Importdatei","")); //setzen des Anfangs- und Endpunkt für die Fortschrittsanzeige fort->Min=1; fort->Max=Memo1->Lines->Count; //Festlegen Schleifenbeginn und Ende for(i=fort->Min;i<fort->Max;i++) { //festlegen der Position des Fortschrittsbalken fort->Position=i; //Aufruf der Funktion Splitline SplitLine(Memo1->Lines[0][i],(char)atoi(Config->ReadString("Maxdata","Trennzeichen","").c_str()), ListBox2->Items); while(ListBox2->Items->Count<=10) { //Hinzufügen von Leerfeldern solange //weniger als Zehn Items im Listenfeld sind ListBox2->Items->Add(""); } //zusammen setzen von ausgewählten Datenschnipseln //welche zuvor getrennt wurden Memo2->Lines->Add(Satzkennzeichen+Datenbank+Uebernahme+uebernommen+Verarbeitungsart+Verarbeitungsart1+one+'þ'+LieKen+ListBox2->Items->Strings[0]+two+'þ'+ListBox2->Items->Strings[1]+three+'þ'+Suchbegriff+four+'þ'+ListBox2->Items->Strings[1]+fife+'þ'+ListBox2->Items->Strings[0]+six+'þ'+LieNr+seven+'þ'+ListBox2->Items->Strings[4]+eight+'þ'+LieKen+ListBox2->Items->Strings[0]+nine+'þ'+HerstArtNr+'þ'); } } else { //anzeigen der Fehlermeldung, falls die Datei nicht gefunden wurde meldung->Lines->Add("Datei nicht gefunden"); } } Memo2->Lines->SaveToFile(Config->ReadString("Einstellungen","Speichern",""));
|
überall dort wo Lieferanten namen oder so etwas über ReadString ausgelesen werden muss das rein was makiert wurde in der Listbox. Listbox hat hier die bezeichnung "auswahl" Wenn ich diese Funktion für jeden Lieferanten extra mache funzt es.Problem dabei der Benutzer soll in der INI beliebig viele Lieferanten hinzufügen können ohne das der Admin oder ich am Quelltext umherbasteln müssen.
Wäre sehr dankbar für Tipps oder Lösungsansätze und wege. -- Wenn man nichts tut, glaubt man, daß man für alles die Verantwortung trägt. |