![]() |
Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)
Hi,
also wenn Du schon beim Optimieren bist:
Delphi-Quellcode:
Hier wird 4 x ein String aus der Liste geholt um einen Vergleich durchzuführen.
if pos('F',SchichtList.Strings[x])>0 then result:='F';//'Frühschicht';
if pos('S',SchichtList.Strings[x])>0 then result:='S';//'Spätschicht'; if pos('N',SchichtList.Strings[x])>0 then result:='N';//'Nachtschicht'; if pos('W',SchichtList.Strings[x])>0 then result:='.';//'Wochenende'; Wenn aber einer der Vergleiche ok geht, wird auch noch weiter verglichen. Also besser
Delphi-Quellcode:
Wenn es gewünscht ist, dass z.B Wochenende den Vorrang hat (theoretisch könnten ja alle Buchstaben in schList auftauchen,
schList := SchichtList.Strings[x];
if pos('F',schList)>0 then result:='F' //'Frühschicht' else if pos('S',schList)>0 then result:='S' //'Spätschicht' else if pos('N',schList)>0 then result:='N' //'Nachtschicht' else if pos('W',SchichtList.Strings[x])>0 then result:='.'; //'Wochenende' dann musst du einfach die Reihnenfolge der Prüfungen entsprechend dem Vorrang tauschen. Gruss |
Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)
Und was ist eigentlich, wenn mal weder F, S, N oder W in SchichtList.Strings[x] vorkommt?
|
Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)
Tja, was ich hier lese riecht für mich eher nach einer klassischen Datenbank-Aufgabe, statt das ganze im Memory abzuarbeiten.
|
Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)
Hallo Stef_One,
Delphi-Quellcode:
mit dieser Zeile wird natürlich sehr viel Speicher belegt und das kann dann dazu führen das Windows anfängt den Speicher auf der Festplatte auszulagern.
Daten : Array [1..100000] of TChangeData;
Ich würde diesen Wert mal auf 1.000 setzen um zu sehen, ob die Geschwindigkeit der Schleife zunimmt, oder besser einen dynamischen Array dafür verwenden, um nur so viel Speicher zu Verbrauchen wie er auch benötigt wird. Bis bald Chemiker |
Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)
Wenn schon per array dann einen dynamischen. Besser aber eine Liste oder eine Datenbank-Lösung
|
Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)
@mkinzler, Danke für den Hinweis zur Datenbank-Lösung!
Gerade das hier spricht dafür: Zitat:
Ich stelle es mir schrecklich vor, Mitarbeiterdaten im Quelltext einzupflegen :-) |
Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)
@mkinzler
Zitat:
Zitat:
mit diesen Datensätzen übersteuere ich die berechneten Schichten (z.b mit Urlaub/Krank/Schichten die nicht der normalen Reihenfolge entsprechen) für eine 4-5 Wochenplanung komme ich jetzt bei 45 Mitarbeitern schon auf ca. 900 einträge! Dieses Array zuverkleinern würde mir nichts bringen.
Delphi-Quellcode:
Daten : Array [1..100000] of TChangeData;
@himitsu Zitat:
übersteuert. |
Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)
Bei 600 Personen wären das 12.000 Records?! Hoffentlich suchst du dadrin nie einen bestimmten, das würde ja ewig dauern. Dazu dann noch die normale Schichtplanung.
Also da würd ich immer über ne Datenbank gehen. Wie speicherst du die Daten denn momentan eigentlich? |
Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)
Hallo Stef_one,
Zitat:
Um das ganze zu vereinfachen, eine Optimierung der Schleife bringt nichts, weil Dein Ansatz grundlegend Falsch ist. Das Mittel der Wahl ist eine Datenbank. Bis bald Chemiker |
Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)
@mquadrat
momentan speicher ich das so:
Delphi-Quellcode:
procedure SaveMitarbeiter;//SaveFileRec;
var F: File of TMitarbeiter; begin try AssignFile(F,extractfilepath(application.exename)+'\data\Mitarbeiter.dat'); ReWrite(F); Write(F,Mitarbeiter); finally CloseFile(F); end; end; @Chemiker Hmm ja Dantenbank damit habe ich mich noch nicht beschäftig, allerdings hatte ich schon nachgedacht über access zu gehn, würd aber gern bei delphi bleiben, gibs dahin gehend eine Komponente die du mir empfehlen kannst? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz