argony Geschrieben 25. Juli 2001 Geschrieben 25. Juli 2001 Hi Leute, ich habe folgendes Problem... Ich hab eine Textdatei, in der die Daten durch ";" voneinander getrennt sind... in Excel lässt sich dass dann auch wunderbar in Form einer Tabelle öffnen... in meinem Builder Programm weiß ich nicht wie ich das anstellen soll... :confused: Hat jemand einen Tipp oder nen Link zu einem brauchbaren Tutorial über dieses Thema... Danke im Voraus mfg Argony Zitieren
Jestertales Geschrieben 25. Juli 2001 Geschrieben 25. Juli 2001 Wie willst Du die Daten denn Anzeigen lassen? Ich habe das gleiche auch schon einmal gemacht, dabei habe ich dann die einzelnen Informationen in jeweils ein Edit-Feld geschrieben. Ist es das was Dir vorschwebt? Den Code dazu könnte ich Dir mailen oder nachher Posten (hab ihn gerade nicht griffbereit). Zitieren
argony Geschrieben 25. Juli 2001 Autor Geschrieben 25. Juli 2001 Hi Jestertales, den code würde ich dankend annehmen... allerdings dachte ich weniger an Editfelder sondern eher an die DBGrid Funktion im C++ Builer. Ich hab mich damit beschäftigt bin allerdings nicht sehr weit gekommen, da ich nicht rausfinden konnte wie ich die einzelnen Felder ansprechen kann... mein quellcode ist auch ziemlich durcheinander... übung macht den meister... (di müsste man erst mal haben ) also wie gesagt der code würde mich sehr interessieren... wenn es geht bitte das ganze projekt. mfg Argony Zitieren
Jestertales Geschrieben 25. Juli 2001 Geschrieben 25. Juli 2001 So, hier ist der Teil meines Programmes, der die Daten mit dem Semikolon eingelesen hat: //--------------------------------------------------------------------------- #include <vcl.h> #include <stdio.h> #include <dos.h> #include <fstream.h> #pragma hdrstop #include "Beispiel.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; FILE *speicher; AnsiString Dateiname; //--------------------------------------------------------------------------- void __fastcall TForm1::ffnen1Click(TObject *Sender) { ifstream goin; // Stream zum Auslesen der Datei char zeichen; char eintrag[251]={0}; // Array, da Zeichen für Zeichen gelesen wird int i = 0, y = 1; // Variablen um Festzustellen welches Edit feld das // aktuelle ist if (OpenDialog1 -> Execute()) { goin.open(OpenDialog1->FileName.c_str()); Dateiname = OpenDialog1->FileName; while (!goin.eof()) // Bis zum Ende des Files lesen { goin.get(zeichen); // Einlesen des Zeichens if (zeichen != 59 && i < sizeof(eintrag)) // Prüfen ob das Zeichen ein // Semikolon ist { eintrag[i] = zeichen; // Wenn nicht: Aktuelles Zeichen dem Array hinzufügen i++; } else // Semikolon: Array in Edit-Feld ausgeben und { // nächstes Edit Feld "ansteuern" switch (y) { case 1: EdtTest1 ->Text = eintrag; break; case 2: EdtTest2 ->Text = eintrag; break; case 3: EdtTest3 ->Text = eintrag; break; case 4: EdtTest4 ->Text = eintrag; break; } y++; i=0; memset(eintrag,0,sizeof(eintrag)); // Array wieder löschen } } } } goin.close(); // Schließen des Streams So, ideal ist die Lösung nicht, aber etwas besseres ist mir nicht eingefallen ;-) Hoffe ich konnte trotzdem helfen. Bye Zitieren
Crush1 Geschrieben 25. Juli 2001 Geschrieben 25. Juli 2001 Hallo, wenn ihr bis morgen warten könnt, kann ich vielleicht eine Antwort geben, weil ich hier ein Buch über den Borland Builder habe, der relativ eingehend die DBE beschreibt. Ich arbeite zwar mit Studio (gebe also keine Garantien ob´s nachher tatsächlich im Builder compiliert wird), aber mal sehn ob ich helfen kann Also ich habe bisher auch die Excel-Exports immer in Arrays eingelesen - ist wohl auch mit das einleuchtendste und einfachste. .... CU tomorrow! Zitieren
argony Geschrieben 26. Juli 2001 Autor Geschrieben 26. Juli 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Jestertales: <STRONG> So, ideal ist die Lösung nicht, aber etwas besseres ist mir nicht eingefallen ;-) Hoffe ich konnte trotzdem helfen. </STRONG> Zitieren
Poldi Geschrieben 26. Juli 2001 Geschrieben 26. Juli 2001 das geht auch einfacher: Zeile einlesenZeile zeichenweise durchgehen und alle ';' durch ein '\0' ersetzen, Anzahl der Ersetzungen merkenJetzt kannst du durch die Zeile "hüpfen", indem du immer erst den ersten String rausholst, und danach strlen(ersterString)+1(wg Nullzeichen) weiterhüpfst wenn du willst kann ich dir code dazu schicken. ist aber wirklich eine elegantere lösung finde ich. Zitieren
argony Geschrieben 26. Juli 2001 Autor Geschrieben 26. Juli 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Poldi: <STRONG> wenn du willst kann ich dir code dazu schicken. ist aber wirklich eine elegantere lösung finde ich.</STRONG> Zitieren
Poldi Geschrieben 26. Juli 2001 Geschrieben 26. Juli 2001 cntWord zählt die Anzahl der durch '@' getrennten Elemente. Der Klammeraffe ist bei dir natürlich ein Semikolon: for (i = 0; i < LineLength; i++) { if (Zeile[i] == '@') { Zeile[i] = '\0'; cntWord ++; } }; // for jedes eingelesene Zeichen ende So, und dann kopierst du die einzelnen Elemente einfach in die Strings oder sonstwohin, wo du sie eben haben willst. for (k = 0; k < LineLength; k++) { if (Zeile[k] == '\0') { element++; strcpy(ablage1,""); // Ci if (element == 13) { strcpy(ablage1, Zeile + k + 1); strcat(neueZeile,ablage1); } // Systemtechnik if (element == 14) { strcpy(ablage1, Zeile + k + 1); strcpy(SystemTechnik,ablage1); } // Kanal[0-7]&maio[0-7]&fhid[0-7] if ( (element > 308) && (element < 325)) { strcpy(ablage1, Zeile + k + 1); strcat(neueZeile,"@"); if (strcmp(ablage1,"") != 0) { strcat(neueZeile,ablage1); } } } }; // for jedes Wort ende Da ich weder eine Entwicklungsumgebung hab, noch C++ kann oder jemals was mit Oberflächen gemacht hab, kann ich dir bei deinem Tabellenproblem leider nicht weiterhelfen ... Zitieren
Crush1 Geschrieben 26. Juli 2001 Geschrieben 26. Juli 2001 OK, hier die DBGrid-Lösung: 1) Beim erstellen der Anwendung DATENZUGRIFF aus der Komponentenpalette auswählen und ein "Table", sowie ein Typ "Datasource" auf das Formular ablegen. 2) DATENSTEUERUNG -> Typ "DBGrid" ins Formular legen 3) Eigenschaft ALIGN für DBGRID1 auf alBottom (zwecks Ausrichtung) 4) Table-Komponente auswählen und die Eigenschaften "DATABASENAME" mit dem Verzeichnis der Datenbank belegen & "TABLENAME" auf den Namen der Tabelle setzen 5) Mit dem Felder-Editor (Doppelklick auf TABLE- oder QUERY-Komponente) CUSTOMER.DB auswählen. 6) DATASOURCE1 (Schnittstelle zwischen TABLE- & DBGRID-Komponente) auf dem Hauptformular auswählen und beim Objektinspektor die Eigenschaften der DATASOURCE-Komponente/DATASET aussuchen und im Listenfenster der Tabelle TABLE1 selektieren. 7) Bei DATASOURCE DATASOURCE1-Komponente auswählen 8) Auf die TABLE-Komponente im Hauptformular klicken und dort die Eigenschaft ACTIVE (steht false drin) doppelklicken und die Daten aus Customer.db werden im DBGRID abgebildet. Werden nun Buttons ins Formular gesetzt zeigt der This-Pointer auf die Table1-Komponente und kann zum Beispiel über Table1->Open() geöffnet werden oder über Table1->Active = !(Table1->Active) an- und ausgeschaltet werden und über den Objektinspektor/FILTER bei Opendialog kann man die Datenbank-Endungen definieren, die zur Verfügung stehen sollen. Öffnen mit: Table1->TableName=OpenDialog1->FileName; Table1->Open(); Eigentlich ganz einfach. Über den -> Operator kann nun jede Table-Funktion bequem aufgerufen werden. Vermutlich erklären sich die meisten Ausdrücke von selbst. Hoffentlich hat Dir das geholfen! Zitieren
argony Geschrieben 26. Juli 2001 Autor Geschrieben 26. Juli 2001 hi leutz, ich konnte leider den ganzen tag nichts abrufen, da bei mir der blitz eingeschlagen hat... ist aber wieder in ordnung. @poldi: vielen herzlichen dank... hat mir sehr geholfen... @crush1: du bist mein engel ... das war genau das was ich gesucht habe... ich glaub jetzt werd ich ein forum junky. @all: nochmals vielen dank an alle ich hab so viel gelernt dass ich jetzt erst mal wieder ne weile lesen und verdauen muss... mfg Argony Zitieren
argony Geschrieben 30. Juli 2001 Autor Geschrieben 30. Juli 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Crush1: <STRONG> 5) Mit dem Felder-Editor (Doppelklick auf TABLE- oder QUERY-Komponente) CUSTOMER.DB auswählen. Hoffentlich hat Dir das geholfen!</STRONG> Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.