Forum: PC-Programmierung Excel Tabelle und txt vergleichen


von fubu1000 (Gast)


Angehängte Dateien:

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.

von Herbert Rusznak (Gast)


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

von fubu1000 (Gast)


Lesenswert?

hmmm,
wie soll so ein array aussehen???

char array [x] [y];

das wird wohl nicht funktionieren!

von Der Hubert (Gast)


Lesenswert?

Wozu die Excel Tabelle ??

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

von Uhu U. (uhu)


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 *))

von fubu1000 (Gast)


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!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.