AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Klatsch und Tratsch Was nervt euch so, während der Programmierung oder so allgemein
Thema durchsuchen
Ansicht
Themen-Optionen

Was nervt euch so, während der Programmierung oder so allgemein

Ein Thema von himitsu · begonnen am 26. Jun 2010 · letzter Beitrag vom 3. Mai 2013
Thema geschlossen
Seite 77 von 192   « Erste     2767757677 787987127177     Letzte »    
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#761

AW: Was nervt euch so, während der Programmierung oder so allgemein

  Alt 17. Dez 2011, 22:54
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#762

AW: Was nervt euch so, während der Programmierung oder so allgemein

  Alt 19. Dez 2011, 13:04
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.

* if Pos(x,y)=1 then 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 StartsStr(x,y) then schauen ob der String damit beginnt


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
Zitat:
Delphi-Quellcode:
function AnsiStartsStr(const ASubText, AText: string): Boolean;
begin
  Result := AnsiSameStr(ASubText, Copy(AText, 1, Length(ASubText)));
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
 
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#763

AW: Was nervt euch so, während der Programmierung oder so allgemein

  Alt 19. Dez 2011, 13:15
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#764

AW: Was nervt euch so, während der Programmierung oder so allgemein

  Alt 19. Dez 2011, 13:29
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:
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;
Für den/jeden Stringvergleich wird hier eine temporäre Variable angelegt, umkopiert und freigegeben.


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;
MSDN-Library durchsuchenCompareString hat nicht umsonst eine Angabe für die Längen ... nämlich genu für sowas (Teilvergleiche).


PS: StartsText/AnsiStartsText ist da besser umgesetzt. (hier hätte ich jetzt zwei AnsiLowerCase und ein Copy erwartet )
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (19. Dez 2011 um 13:48 Uhr)
 
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#765

AW: Was nervt euch so, während der Programmierung oder so allgemein

  Alt 19. Dez 2011, 13:39
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 ....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
 
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#766

AW: Was nervt euch so, während der Programmierung oder so allgemein

  Alt 19. Dez 2011, 14:30
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 ....
Ich glaube, besser kann man es gar nicht schildern
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
 
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#767

AW: Was nervt euch so, während der Programmierung oder so allgemein

  Alt 21. Dez 2011, 10:48
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)
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#768

AW: Was nervt euch so, während der Programmierung oder so allgemein

  Alt 5. Jan 2012, 11:29
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.

Delphi-Quellcode:
case Fields[i2].ClassType of
  TBooleanField: ...;
  TIntegerField: ...;
  TFloatField: ...;
  TDateField: ...;
  ...
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
 
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#769

AW: Was nervt euch so, während der Programmierung oder so allgemein

  Alt 5. Jan 2012, 12:57
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
 
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#770

AW: Was nervt euch so, während der Programmierung oder so allgemein

  Alt 5. Jan 2012, 13:33
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.

Delphi-Quellcode:
case Fields[i2].ClassType of
  TBooleanField: ...;
  TIntegerField: ...;
  TFloatField: ...;
  TDateField: ...;
  ...
end;
In dem speziellen Fall gäb's dafür die Property DataType. Ansonsten müsstest du es analog zu dem case für Strings (nämlich unter Zuhilfenahme von StrUtils.IndexText bzw StrUtils.IndexStr).
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
 
Thema geschlossen
Seite 77 von 192   « Erste     2767757677 787987127177     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

(?)

LinkBack to this Thread

Erstellt von For Type Datum
Untitled document This thread Refback 7. Nov 2011 09:54

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz