|
You last visited: Today at 13:36
Advertisement
Delphi Warteschlange
Discussion on Delphi Warteschlange within the General Coding forum part of the Coders Den category.
09/22/2013, 11:55
|
#1
|
elite*gold: 35
Join Date: Feb 2012
Posts: 1,965
Received Thanks: 1,632
|
Delphi Warteschlange
Guten Morgen Leute.
Ich habe mal eine Frage bezüglich eines neuen Projektes meinerseits.
Ich möchte mir eine Art Kundenservice Oberfläche programmieren.
Das Programm soll dazu dienen, dass der Arbeiter , der den Fall aufnimmt, erstmal alle Daten von dem Kunden aufnehmen soll. Sprich er soll aufnehmen, wie er heißt, was für ein Produkt er hat und wie teuer es war/ist.
Diese ganzen Daten sollen dann in eine Warteschlange eingefügt werden, damit sie nacheinander abgearbeitet werden. Momentan bin ich noch dabei die Oberfläche zu konstruieren , weiß aber gerade nicht weiter.
Also momentan sieht mein Programm so aus:
Nun bin ich mir leider nicht ganz sicher, wie ich das ganze mit der Warteschlange angehen soll. Soll ich das ganze nun irgendwie per StringGrid erstellen oder mit einem einfachen Edit Feld? Ich weiß nicht, welche Methode einfacher wäre. In der Schule wurde uns nur vorgegeben es mit Hilfe eine Warteschlange machen zu müssen. Das bedeutet, dass die Person, die zuerst da war, auch wieder als erstes dran kommt bzw. ausgewählt wird aus der Liste. Wie ich oben schon sagte, weiß ich nun leider nicht, wie ich es visuell darstellen soll.
Habt ihr irgendwelche Tips? Aber pls kommt mir nicht mit "delphi ist scheiße  "
mfg Ivica.Lovro
|
|
|
09/23/2013, 16:08
|
#2
|
elite*gold: 1
Join Date: Mar 2011
Posts: 828
Received Thanks: 1,395
|
Datenstrukturen mit GUI Komponenten zu modellieren ist immer schlecht. Also auf keinen Fall deine Warteschlange per StringGrid oä. implementieren!!! Es sei denn, die Warteschlange soll nicht wirklich funktionieren; sprich: du willst einfach eine Liste haben, in die alle Aufträge nacheinander eingefügt werden. Ist das der Fall, dann nimm am besten ein TListView mit ViewStyle auf vsReport. Hierzu sollte es massig Tutorials geben.
Deinem Avatar entnehme ich, dass du D6 verwendest? Dort gibt es leider noch nicht die generische TQueue Klasse in der Generics.Collections Unit. Das bedeutet, dass du dir erstmal eine Klasse deklarieren musst, die die eigentliche Queue Funktionalität (Enqueue, Dequeue, etc) kapselt.
|
|
|
09/23/2013, 17:41
|
#3
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
Delphi ist super, keine Sorge!
Wenn die Liste linear abgearbeitet werden soll, ohne dass Aufträge mitten raus genommen werden können, dann würde ich einen record machen, der alle Daten enthält, und solche Records dann in einem array of speichern. Dann kannst du mit SetLength das Array erweitern wie du es brauchst.
Insgesamt ist das allerdings die einfachste und sicherlich auch eine sehr unsaubere Methode.
Mein Vorschlag: Mach eine verkettete Liste. Im Idealfall schlage ich eine doppelt verkettete Liste vor, deren einzelne Nodes einfach verkettete Listen sind, so dass du jederzeit neue Attribute über den Kunden dynamisch hinzufügen kannst oder auch weglassen kannst. Speichern kann man das einfach binär mit einer kleinen serialize Funktion, die einmalige Trennzeichen setzt, so dass du das ganze genau so einfach wieder auslesen kannst.
Dies ermöglicht dir sehr einfach Löschen oder Hinzufügen von Elementen mitten in der Liste.
Um die Liste schneller zu machen, kann man noch einen binary tree programmieren, der zum Indexieren dient (z.B. Vorname oder Nachname)
Auf der Benutzeroberfläche kannst du dann ein TListView erstellen, den du mit Daten und IDs aus deiner Liste fütterst. Bei Interaktionen mit dem ListView Element kannst du dann per ID deine Liste hinten bearbeiten und den ListView aktualisieren.
|
|
|
09/23/2013, 19:50
|
#4
|
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
|
(Priority) Queue.
|
|
|
09/23/2013, 21:20
|
#5
|
elite*gold: 35
Join Date: Feb 2012
Posts: 1,965
Received Thanks: 1,632
|
Erst einmal Danke, dass ihr mir geantwortet habt.
Ihr bringt mich auf jeden Fall schonmal auf den richtigen Weg.
Ich wusste auch nicht, ob ich hier jemanden direkt fragen kann, da ich seit gestern neu in der Sektion hier bin. Natürlich bin ich in Delphi schon etwas länger unterwegs (2Jahre ca.). Ich kam jedoch einfach nicht drauf, wie ich das ganze anstellen sollte. Im Folgenden werde ich nun weiter auf eure Beiträge eingehen.
Quote:
Originally Posted by Saedelaere*
Datenstrukturen mit GUI Komponenten zu modellieren ist immer schlecht. Also auf keinen Fall deine Warteschlange per StringGrid oä. implementieren!!! Es sei denn, die Warteschlange soll nicht wirklich funktionieren; sprich: du willst einfach eine Liste haben, in die alle Aufträge nacheinander eingefügt werden. Ist das der Fall, dann nimm am besten ein TListView mit ViewStyle auf vsReport. Hierzu sollte es massig Tutorials geben.
Deinem Avatar entnehme ich, dass du D6 verwendest? Dort gibt es leider noch nicht die generische TQueue Klasse in der Generics.Collections Unit. Das bedeutet, dass du dir erstmal eine Klasse deklarieren musst, die die eigentliche Queue Funktionalität (Enqueue, Dequeue, etc) kapselt.
|
Okay. Das habe ich soweit schon einmal verstanden. In der Schule wurde mir heute "beigebracht" , dass wir es mit Hilfe einer Memo machen sollen. Ich hatte nur mal so assoziiert, wie ich eventuell sowas entwickeln könnte und bin schließlich auch der Meinung, dass eine StringGrid am Thema vorbei ist.
Wir sollen es nun mit Hilfe einer Queue herstellen und es ist vorgegeben, dass diese nach dem "FIFO" Prinzip arbeiten soll. Du warst mit deiner Annahme richtig, dass ich Delphi6 benutze. (Haben wir in der Schule bekommen)
Quote:
Originally Posted by マルコ
Delphi ist super, keine Sorge!
Wenn die Liste linear abgearbeitet werden soll, ohne dass Aufträge mitten raus genommen werden können, dann würde ich einen record machen, der alle Daten enthält, und solche Records dann in einem array of speichern. Dann kannst du mit SetLength das Array erweitern wie du es brauchst.
Insgesamt ist das allerdings die einfachste und sicherlich auch eine sehr unsaubere Methode.
Mein Vorschlag: Mach eine verkettete Liste. Im Idealfall schlage ich eine doppelt verkettete Liste vor, deren einzelne Nodes einfach verkettete Listen sind, so dass du jederzeit neue Attribute über den Kunden dynamisch hinzufügen kannst oder auch weglassen kannst. Speichern kann man das einfach binär mit einer kleinen serialize Funktion, die einmalige Trennzeichen setzt, so dass du das ganze genau so einfach wieder auslesen kannst.
Dies ermöglicht dir sehr einfach Löschen oder Hinzufügen von Elementen mitten in der Liste.
Um die Liste schneller zu machen, kann man noch einen binary tree programmieren, der zum Indexieren dient (z.B. Vorname oder Nachname)
Auf der Benutzeroberfläche kannst du dann ein TListView erstellen, den du mit Daten und IDs aus deiner Liste fütterst. Bei Interaktionen mit dem ListView Element kannst du dann per ID deine Liste hinten bearbeiten und den ListView aktualisieren.
|
Das hört sich doch schon einmal super an. Dies ist auch genau das, was mir heute in der Schule "erklärt" wurde. Jedoch meinte meine Lehrerin, dass es mit einem Array nicht gehen würde bzw. sie wollte es nicht so machen. Ich werde sie in der nächsten Stunde allerdings darauf ansprechen, dass es eine solche Funktion gibt, womit man das Feld (Array) erweitern kann.
Quote:
Originally Posted by Schlüsselbein
(Priority) Queue.
|
Genau das ist das Prinzip. "FIFO"
Ich werde nun einfach versuchen die Datensätze des Typs aufzunehmen. Diese Datensätze werden dann am Ende der Queue eingefügt.
Mittlerweile habe ich mich auch etwas schlau gemacht, was die Queueoperationen sind.
Quote:
create: erzeugt eine leere Queue
enqueue( d ): fügt den Datensatz d am Ende der Queue ein
dequeue: entfernt den Datensatz am Anfang der Queue
|
Ebenfalls gibt es eine bestimmte Queuefunktion:
Quote:
|
is_empty: gibt an, ob die Queue leer ist
|
Des Weiteren habe ich herausgefunden, dass man nach verschiedenen Kriterien sortieren lassen kann.
Quote:
Wörter (alphabetische Sortierung)
Datumsangaben (zeitliche Sortierung)
Zahlen (Sortierung nach Größe)
|
Wie ich das ganze dann weiter entwickeln werde hängt allerdings dann auch davon ab, wie sich meine Lehrerin entscheidet. Eventuell bekommen wir auch noch bestimmte Vorgaben.
|
|
|
09/23/2013, 23:02
|
#6
|
elite*gold: 1
Join Date: Mar 2011
Posts: 828
Received Thanks: 1,395
|
Mit Array würde ich es auch nicht machen, denn das dynamische Vergrößern ist nicht sehr performant. Die schon genannte linked list dürfte für deine Zwecke am besten geeignet sein. Eine solche Klasse musst du dir dann natürlich auch noch implementieren, denn Delphi stellt dafür von Haus aus nichts zur Verfügung.
Noch ein guutes Delphiforum, in dem man dir bestimmt um einiges kompetenter helfen kann als hier:
|
|
|
 |
Similar Threads
|
DELPHI - Who make Exploits, Hacks and Tools with DELPHI?
05/15/2013 - CO2 Programming - 13 Replies
Hi all.
Iwith DELPHI, but a dont now.
hello, I use Delphi to program and i like someone put here source code of make Exploits, Hacks and Tools bot here, or part of the code.
ty to all
|
In warteschlange ??
04/03/2013 - World of Warcraft - 5 Replies
hallo ich habe nun nach einem problem die fraktionwechselung nochmal durchgeführt nun steht der status der bestellung auf in der warteschlange was heißt das ist es jetzt erfolgreich und muss ich nur warten oder ist irgendwas falsch
|
Warteschlange
06/10/2011 - League of Legends - 26 Replies
Ladet es bei euch auch etwas länger wenn ihr euch einloggt und dann kommt
noch ne warteschlange von knapp 45 min
|
[DELPHI&METIN]Wie sind die Delphi Befehle für einen Bot?
03/07/2010 - General Coding - 3 Replies
Hallo liebe com,
ich habe mal eine Frage: Ich möchte einen Metin Bot in Delphi schreiben aber ich weiß nicht die Befehle für
eine bestimmte Taste senden etc.
könnt ihr mir die pls sagen oder per pn geben
MfGGGGGG
|
All times are GMT +1. The time now is 13:36.
|
|