![]() |
AW: Was nervt euch so, während der Programmierung oder so allgemein
Sagen wir es mal so, ich hab das "absichtlich" gemacht, da die Liste sich nicht verändern darf.
Einzige andere sichere Möglichkeit wäre, daß man jeden Eintrag einzeln sperren können müßte, daß jeder Thread, bzw. jedes Objekt (Enumerator und Co.) seinen eigenen Index-Zähler bekommt und die Indize gegenseitig synchronisiert würden. |
AW: Was nervt euch so, während der Programmierung oder so allgemein
Man hat doch mal vor einer Weile das FastStringsProjekt in Delphi aufgenommen ... ist ja gut und schön,
aber wenn man jetzt dieses wieder mit vollkommen schrottigen Funktionen zur Minna macht ... also das nervt echt mal. Frage: Was ist schneller? Gesucht ist, ob ein String mit einem bestimmten Text beginnt. *
Delphi-Quellcode:
den String überall suchen und danach schauen ob er gleich am Anfang gefunden wurde. (ist er nicht vorhanden, wurde umsonst der ganze String durchsucht)
if Pos(x,y)=1 then
*
Delphi-Quellcode:
schauen ob der String damit beginnt
if StartsStr(x,y) then
Vom Code her ist letzeres ja verständlicher. Und auch von der Logik her sollte Letzteres schneller sein, oder nicht? Nee, natürlich nicht, da kommt man dann auf die saudämliche Idee und fängt an Strings umzukopieren, anstatt einfach nur zu vergleichen :wall: Zitat:
|
AW: Was nervt euch so, während der Programmierung oder so allgemein
Also ich gehe mal davon aus, dass die Entwickler keine vollkommenen Ioten sind. Deswegen gehe ich davon aus, dass sie sich was dabei gedacht haben.
|
AW: Was nervt euch so, während der Programmierung oder so allgemein
Ja, die haben sich Arbeit gespart (2 Sekunden weniger nachdenken müssen), ansonsten ist diese Funktion einfach nur grauenhaft.
Rufe diese Funktion so 300.000 Mal kurz hintereinander auf (mit unseren wenigen Testdaten ... wird mal mehr), da wird dann sinnlos unsere wertvolle Zeit verplempert. Aktuell: Interne Aufrufe/Weiterleitungen
Delphi-Quellcode:
Für den/jeden Stringvergleich wird hier eine temporäre Variable angelegt, umkopiert und freigegeben.
function StartsStr(const ASubText, AText: string): Boolean; inline;
Result := AnsiStartsStr(ASubText, AText); Result := AnsiSameStr(ASubText, Copy(AText, 1, Length(ASubText))); Result := AnsiCompareStr(S1, S2) = 0; Result := CompareString(LOCALE_USER_DEFAULT, 0, PChar(S1), Length(S1), PChar(S2), Length(S2)) - CSTR_EQUAL; Besser (nur prüfen/nichts kopieren):
Delphi-Quellcode:
function StartsStr(const ASubText, AText: string): Boolean; inline;
Result := AnsiStartsStr(ASubText, AText); Result := CompareString(LOCALE_USER_DEFAULT, 0, PChar(ASubText), Length(ASubText), PChar(AText), Min(Length(AText), Length(ASubText))) - CSTR_EQUAL; ![]() PS: StartsText/AnsiStartsText ist da besser umgesetzt. (hier hätte ich jetzt zwei AnsiLowerCase und ein Copy erwartet :stupid:) |
AW: Was nervt euch so, während der Programmierung oder so allgemein
Seit Jahren ein unaufhaltbarer Trend Mamutschkaprinzip, etwas funktionierendes immer wieder einzwiebeln und noch ne Schicht drum 20 Interfaces Dran, Wrappen, in eine Klasse packen , 20 Ableitungen davon machen, das ganze per einfacher Class Executefunktion zugrifbar machen, das dann wieder in eine Klasse übernehmen deren 27igste Ableitung dann das ist was der Entwickler am Ende der Kette meint nehmen zu müssen um ein inc(IntegerVar) auszuführen.
Sorry für den Enthusiasmus .... |
AW: Was nervt euch so, während der Programmierung oder so allgemein
Zitat:
|
AW: Was nervt euch so, während der Programmierung oder so allgemein
So langsam VirtualBox, das ist jetzt das 2. Upgrade das in die Hose geht.
Vor den Updates 3D und Aero. 1. Upgrade Additions bringen Maschine zum hängen (Wiederherstellungspunkt hilft) 2. Upgrade Hostnetzwerk komplett zerschossen (Mit neuen Additions kein Aero, 1920*1200 nur über force) |
AW: Was nervt euch so, während der Programmierung oder so allgemein
Ein Pointer ist doch ein ordinaler Typ und Typen sind konstant?
Wenn das stimmt, dann ist Folgendes voll nervig gemein, also daß es nicht geht. :cry:
Delphi-Quellcode:
case Fields[i2].ClassType of
TBooleanField: ...; TIntegerField: ...; TFloatField: ...; TDateField: ...; ... end; |
AW: Was nervt euch so, während der Programmierung oder so allgemein
Typen sind aber keine ordinalen Werte, sie gehorchen insbesondere keiner wertmäßigen und eindeutig definierten Sortierung (Stichwort "Rang"). Gewünscht habe ich mir ähnliches auch schon desöfteren, aber zumindest im Rahmen der Definitionen für "Cases" ist das schon richtig, dass das nicht geht.
|
AW: Was nervt euch so, während der Programmierung oder so allgemein
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:10 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