AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Anzahl eines Zeichens im String ermitteln

Anzahl eines Zeichens im String ermitteln

Ein Thema von devidespe · begonnen am 27. Jun 2008 · letzter Beitrag vom 17. Jul 2018
Antwort Antwort
Seite 16 von 16   « Erste     6141516
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
2.103 Beiträge
 
Delphi 2010 Professional
 
#151

AW: Anzahl eines Zeichens im String ermitteln

  Alt 16. Jul 2018, 20:47
Hab noch etwas gebastelt aber ist auch nicht sehr effektiv.
Delphi-Quellcode:
// versuche 4 compares pro loop abzufertigen
function TCharInString.MultiCountChar(const s: string; const c: Char): Integer;
var
  i, ii, iii, iiii: Integer;
begin
  Result := 0;
  ii := Length(s);
  iii := (ii div 2);
  iiii := iii+1;
  for i := 1 to (Length(s) div 2) do
  begin
    if s[i] = c then Inc(Result, 1); // suche vom Anfang in Richtung Mitte
    if s[ii] = c then Inc(Result, 1); // suche vom Ende in Richtung Mitte
    if s[iii] = c then Inc(Result, 1); // suche von Mitte in Richtung Anfang
    if s[iiii] = c then Inc(Result, 1); // suche von Mitte in Richtung Ende
    Dec(ii);
    Dec(iii);
    Inc(iiii);
    if i = iii then Break;
  end;
end;
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
34.931 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#152

AW: Anzahl eines Zeichens im String ermitteln

  Alt 17. Jul 2018, 09:40
Sinnlos auf unnötig viele Vaiablen zugreifen und im Speicher kreuzundquer? Da kann dann nichtmal ein ordentliches Pageging/Caching gut arbeiten.
Eventuell werden Chars doppelt, dreifach oder gar vierfach gezählt und anstatt die Schleife gleich im richtigen Bereich laufen zu lassen noch eine zusätzliche Abbruchprüfung.

Eine Schleife mit nur einer Zähler- und Ende-Variable und zugriff auf nur eine Page nach der Anderen, anstatt kreuzundquer.

Oder, 4 oder 8 zusammenhängende und ausgerichtete (align) Bytes in ein Register (lokale temporäre Variable innerhalb der Schleife) einlesen und direkt im Register prüfen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (17. Jul 2018 um 09:42 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:

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