Autor Beitrag
yasukatakaya
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 21.02.08 20:17 
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:
Einloggen, um Attachments anzusehen!
Logikmensch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 390

Win XP
Delphi 2007 Prof., XE2, XE5
BeitragVerfasst: 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.

ausblenden 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..6of 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.

_________________
Es gibt keine Probleme - nur Lösungen!
yasukatakaya Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 390

Win XP
Delphi 2007 Prof., XE2, XE5
BeitragVerfasst: 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.

Im StringGrid ist die Suche relativ einfach. Wenn Du z.B. in der ersten Spalte einen Eintrag suchst, kannst Du einfach mit

ausblenden 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 user profile iconNarses: Delphi-Tags hinzugefügt

_________________
Es gibt keine Probleme - nur Lösungen!