Autor |
Beitrag |
ChrisCross
Beiträge: 124
Erhaltene Danke: 12
Windows 10 64 bit
Delphi XE6 Starter
|
Verfasst: Sa 13.10.12 14:50
Hallo,
ich habe mein Kassenprogramm nocheinmal neu geschrieben (das alte kann man hier sehen: www.entwickler-ecke....rder=asc&start=0 und habe die Buttons weggelassen und sie durch ein Eingabefeld ersetzt)
Jetzt habe ich eine IF THEN abfrage gemacht. Also IF Barcode := '1234' THEN Warenliste.Items.Add('Käse (100g)' + Tab + 'Algäuer Alm' + Tab + '24546' + Tab + '0,60 €'); usw.
Wenn man aber nur die .exe Datei hat kann man ja keine Produkte hinzufügen. Ich habe jetzt einen neuen Tab erstellt mit Neue Produkte. Dort kann man alle nformationen eingeben. Das Funktioniert auch gut.
Ich wollte jetzt '1234' usw. einfach ersetzen. Erstmal einlesen und speichern
Delphi-Quelltext 1: 2: 3:
| INummer := ini.ReadString(Spe, 'Artikelnummer', ''); IF Nam = Nummer THEN Warenliste.Items.Add(Produktname + Tab + Firma + Tab + Nummer + Tab + PreisBon); |
und dann ersetzen. Aber eigendlich funktioniert das ja nicht. Woher soll Delphi wissen welchen Abschnitt und welche "Nummer" ich meine. Wie mache ich das?
|
|
jfheins
Beiträge: 918
Erhaltene Danke: 158
Win 10
VS 2013, VS2015
|
Verfasst: Sa 13.10.12 15:06
Speichere die ganzen Produkte am besten in einer Datenbank oder einer Datei. (Datenbank ist professioneller, Datei am Anfang einfacher)
Wenn du eine Datei hernimmst, kannst du diese beim Programmstart einlesen und als Liste oder so im Speicher halten.
Sobald ein Barcode eingegeben wird, durchsuchst du die Liste und liest den zugehörigen Text aus.
Ich empfehle dir, eine kleine Klasse zu schreiben die alle Infos zu einem Artikel enthält. Dann deklarierst du eine Variable des Typs TObjectList und speist für jeden Barcode ein Objekt in die Liste ein.
Bei kleinen Datenmengen kannst du die Liste dann einfach von vorne bis hinten durchgehen um zu einem Barcode den Artikel zu finden.
Bei größeren Datenmengen solltest du die Liste sortieren damit du schneller suchen kannst.
Für diesen Beitrag haben gedankt: ChrisCross
|
|
Narses
Beiträge: 10182
Erhaltene Danke: 1255
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Sa 13.10.12 15:16
Moin!
So wie ich das sehe, hast du doch schon sowas wie ein CSV-Format in deiner Warenliste. Also dürfte der einfachste Weg sein, diese direkt zu speichern.
Delphi-Quelltext 1:
| Warenliste.Items.SaveToFile('Waren.csv'); |
Und bei Programmstart:
Delphi-Quelltext 1:
| Warenliste.Items.LoadFromFile('Waren.csv'); |
Fertig.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
Für diesen Beitrag haben gedankt: ChrisCross
|
|
ChrisCross
Beiträge: 124
Erhaltene Danke: 12
Windows 10 64 bit
Delphi XE6 Starter
|
Verfasst: Mo 15.10.12 18:45
Danke für eure Antworten. Könntet ihr mir aber trotzdem bei der IF THEN Abfrage helfen. Also wo man den Produktcode eingibt, dass er den mit der ini Datei Vergleicht und dann den Namen und den Preis aus der gleichen Gruppe, wo der Produktcode drinsteht ausgiebt.
|
|
jfheins
Beiträge: 918
Erhaltene Danke: 158
Win 10
VS 2013, VS2015
|
Verfasst: Mo 15.10.12 21:09
Also den konkreten Teil kannst du nicht nur mit einer if-Abfrage lösen, da brauchst du noch eine Schleife:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| Warenliste := TObjectlist.Create(); Warenliste.Add(TWare.Create('Algäuer Alm', 'Käse (100g)', 24546, 60)); Warenliste.Add(TWare.Create('Haribo Goldbären', 'Quengelware', 1234, 149));
for i := 0 to Warenliste.Length - 1 do begin if Warenliste[i].Artikelnummer = Barcode then Einkaufskorb.Add(Warenliste[i]); end; |
Wenn dir das nicht hilft ist vielleicht deine Frage etwas wage gestellt. Du solltest auf jeden Fall den Barcode direkt beim Produkt speichern und kannst dann in einer Liste das Produkt suchen sobald du den Barcode kennst.
|
|
Narses
Beiträge: 10182
Erhaltene Danke: 1255
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 15.10.12 21:37
Moin!
ChrisCross hat folgendes geschrieben : | Könntet ihr mir aber trotzdem bei der IF THEN Abfrage helfen. Also wo man den Produktcode eingibt, dass er den mit der ini Datei Vergleicht und dann den Namen und den Preis aus der gleichen Gruppe, wo der Produktcode drinsteht ausgiebt. |
Sorry, ich kann dir nicht folgen. Zeig mal deine INI-Datei.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
bummi
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Mo 15.10.12 23:06
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
ChrisCross
Beiträge: 124
Erhaltene Danke: 12
Windows 10 64 bit
Delphi XE6 Starter
|
Verfasst: Di 16.10.12 07:15
Hier ist das ganze Programm.
Ich glaube ich habe meine Frage dumm gestellt , im Programm seht ihr dann was ich meinte. Ich habe die alte Variante nur auskommentiert.
(Ich habe auch versucht den Quellcode zu strukturieren. Hoffentlich ist es mir gelungen)
Einloggen, um Attachments anzusehen!
|
|
bummi
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Di 16.10.12 07:29
Delphi-Quelltext 1: 2: 3: 4:
| try
spe := ArtikelNummer.Text; IProduktname :=ini.ReadString(Spe, 'Produktname', ''); |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Für diesen Beitrag haben gedankt: ChrisCross
|
|