mikrocontroller.net

Forum: PC-Programmierung Excel Tabelle und txt vergleichen


Autor: fubu1000 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
habe ein Programm in Borland C++ Builder geschrieben, welches aus einer 
.txt Datei Wörter auf Deutsch sucht und diese dann in einer Excel 
Tabelle sucht, um das Englische Wort zu finden.
Beide speichere ich anschliessend in einem AnsiString, welchen ich dann 
am Ende des Programms, wieder in eine .txt Datei speicher.
Allerdings dauert der Ablauf des Programms ca. 30min.
Es sind 2573 Excel Einträge und ca. 300 Deutsche Wörter in der .txt 
Datei, nach denen ich suchen muss.
Das durchgehen der Excel Tabelle verschlingt am meisten Zeit, habe ich 
so das Gefühl.
Jemand ne Idee, wie ich mein Programm verschnellern kann???

Gruss und Dank, fubu.

Autor: Herbert Rusznak (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die exceltabelle einmal in ein array einlesen und dann selbst darin 
suchen ist sicherlich um einiges schneller. da es sicherlich nicht so 
bald 100k einträge werden reicht dieser ansatz vorerst einmal ;)

lgherby

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmmm,
wie soll so ein array aussehen???

char array [x] [y];

das wird wohl nicht funktionieren!

Autor: Der Hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wozu die Excel Tabelle ??

Oder muss der Text auch für "Humans" manuell zugreifbar sein ??

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
fubu1000 wrote:
> hmmm,
> wie soll so ein array aussehen???

z.B. für 100 Worte:

   char *Worte[100];

Gespeichert werden Pointer auf die Worte. Die legst du mit NUL-Zeichen 
getrennt in einen Puffer und setzt jeweils ein Pointerarray-Element auf 
den ersten Buchstaben des Wortes.

Wenn du das so aufbaust, kannst du die Excel-Tabelle zu Beginn einlesen, 
indem du

- 1 Wort an die nächste freie Position im Puffer liest,
- das NUL-Zeichen anfügst,
- den Pointer auf das Wort setzt,
- den Wortindex um eins hochzählst

und die ganze Prozedur wiederholst, bis entweder kein Pointer mehr 
verfügbar ist, der Puffer voll ist, oder die Excel-Tabelle vollständig 
eingelesen ist.

Wortarray und Puffer sollten also groß genug sein...

Gesamter Speicherbedarf:

   <gesamtlänge aller worte> + <anzahl worte> * (1 + sizeof(char *))

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schönen dank an alle, habe die excel jetzt in strings gespeichert und 
jetzt läuft alles unter einer min.
gruss und dank nochmal!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.