Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Werte aus xls-datei auslesen, vergleichen?!
yasukatakaya - Do 21.02.08 20:17
Titel: Werte aus xls-datei auslesen, vergleichen?!
Hallo,
ich bin ein Newbie in Sachen Delphi und deswege frage ich hier im Forum nach, ob ihr mir helfen könnt und zwar habe ich folgendes Problem:
Ich lese ein paar Infos aus einem Prog (Altium Designer) wie z.B. einen Widerstand R1 dazu will ich in einer Tabelle (xls- oder csv-Datei) nachgucken, welcher Wert dazugehört, und diesen füge ich dann in das Prog ein!
Also das Problem ist, ich hab eine Variable in der verschiedene Bauteile gespeichert werden und diese werden dann in einer Tabelle gesucht und das dazugehörige Wert etc. in einer anderen Variable gespeichert, die ich dann in das Prog einfügen werde, wie kann ich dieses bewerkstelligen?!
Ich hoffe mir kann jemand helfen!
Danke im Voraus und einen schönen Abend noch!
PS: die datei sieht zB so aus im Anhang:
Logikmensch - Fr 22.02.08 07:14
Hallo!
wenn Deine Tabelle von der Komplexität so klein ist wie die im Anhang Deiner Nachricht, dann würde ich Dir empfehlen, statt die Suche in einer externen Excel-Tabelle zu lösen, wohl besser die Daten in ein TStringGrid reinzuschreiben. Dort kannst Du die Daten viel leichter Suchen. Das einzige, was Du im FormCreate-Ereignis tun musst ist, das StringGrid mit den Daten aus Deiner z.B. CSV-Datei zu füllen.
Wenn Du nicht unbedingt von extern die Daten lesen musst, kannst Du die Daten doch z.B. auch in einer String-Konstante unterbringen, z.B.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| type TBauteile=(bt_Resistor, bt_Transistor, bt_Condensator); TBauteil=record typ:TBauteile; value:integer; designator,firma:string; end;
const Bauteile:array[1..6] of TBauteil= ((typ:bt_Resistor; value: 20000; designator:'R1'; firma:'a'), (typ:bt_Resistor; value:130000; designator:'R2'; firma:'b'), (typ:bt_Resistor; value: 34000; designator:'R3'; firma:'c'), (typ:bt_Resistor; value: 45000; designator:'R4'; firma:'d'), (typ:bt_Resistor; value:123000; designator:'R5'; firma:'e'), (typ:bt_Resistor; value: 76000; designator:'R6'; firma:'f')); |
Eine Suche für obige Konstante zu schreiben, ist mit einer einfachen For-Schleife zu erledigen.
yasukatakaya - Fr 22.02.08 11:06
Hi,
danke für deine Antwort, doch meine Excel-Tabelle oder (csv) ist viel länger und deswegen muss ich auf externe Dateien zugreifen, wie ich das mit Delphi machen kann, kenne ich mich viel zu wenig mit Delphi aus!?
Hast du vielleicht dazu auch eine Lösung?
Logikmensch - Fr 22.02.08 18:39
Klar. Im Falle des CSV-Formates kannst Du z.B. die CSV-Datei in ein StringGrid einlesen. Guckst Du
hier [
http://www.delphi-forum.de/viewtopic.php?t=60904&highlight=csvdateien+einlesen].
Im StringGrid ist die Suche relativ einfach. Wenn Du z.B. in der ersten Spalte einen Eintrag suchst, kannst Du einfach mit
Delphi-Quelltext
1:
| zeile:=StringGrid1.col[0].indexof('gesuchter Text') |
die betreffende Zeile rausbekommen, in der 'gesuchter Text' steht (im Fehlerfall ist das Ergebnis -1). Ist für den Anfang sicher leichter für Dich, Dich da reinzuarbeiten, als Dich mit der Fernsteuerung von Excel auseinanderzusetzen. Wenn Du letzteres wirklich willst, dann musst Du hier im Forum mal nach Excel fernsteuern oder so suchen.
Moderiert von
Narses: Delphi-Tags hinzugefügt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!