AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Groß u. Kleinschreibung eines Strings umkehren
Thema durchsuchen
Ansicht
Themen-Optionen

Groß u. Kleinschreibung eines Strings umkehren

Ein Thema von k6n · begonnen am 24. Feb 2009 · letzter Beitrag vom 25. Feb 2009
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von himitsu
himitsu

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

Re: Groß u. Kleinschreibung eines Strings umkehren

  Alt 25. Feb 2009, 08:58
Zitat von Satty67:
Ich hab' wieder mal auf möglichst wenige Variablen geachtet. Ist zwar sicher unwichtig
keine Sorge, bin nich neidisch, dafür hab ich doch möglichs wenige Funktionsaufrufe

das schnellste/kleinste vermutlich, wenn ich meine erste Version nach PChar oder gleich nach ASM konvertiere

Aber da du bei deinem Lower-/Uppercase jedes mal erst aus dem Char 'nen String machst und dann diese Funktionen auch noch mehrmals aufrufst, wird ein Aufruf dieser Funktionen schneller sein.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#12

Re: Groß u. Kleinschreibung eines Strings umkehren

  Alt 25. Feb 2009, 10:02
Also hab's jetzt mal getestet...

meine Version ist die langsamste... und zwar mit Abstand die langsamste
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

Re: Groß u. Kleinschreibung eines Strings umkehren

  Alt 25. Feb 2009, 10:14
Das war ja auch zu erwarten ... nicht weil du es gemacht hast sondern wie himitsu schreibt es eben zu 2*[LängeDesStrings] Aufrufen der Funktion UpperCase bzw. LowerCase kommt

Da ist natürlich eine Lösung, die diese Funktionen erst gar nicht nutzt (jaenicke), oder eben nur 2x aufruft (himitsu) wesentlich schneller.

Dafür ist die Lösung von Dir und himitsu auch Unicode-kompatibel und somit allgemeingültig

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Groß u. Kleinschreibung eines Strings umkehren

  Alt 25. Feb 2009, 10:28
jupp ruft 2*LängeDesStrings CharToStr und eine der Stringfunktionen(Lower/Upper) auf und diese Funktionen sind alle nicht unbedingt schnell.

Aber das langsamste ist hier eigentlich dieses interne CharToStr (Result[i] ist ja ein Char und Upper-/LowerCase wollen einen String, also muß erst ein String erstellt werden)

Code:
// Satty67's Funktion
function SwitchUpperLower(Str: String): String;
var
  i : Integer;
begin
  Result := Str;
  for i := 1 to Length(Result) do
    if UpperCase([b]CharToStr[/b](Result[i])) = Result[i] then
      Result[i] := LowerCase([b]CharToStr[/b](Result[i]))[1]
    else
      Result[i] := UpperCase([b]CharToStr[/b](Result[i]))[1];
end;
OK, das ist also nicht unbedingt schnell, aber vom Prinzip her isses nicht falsch und es funktioniert immerhin
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#15

Re: Groß u. Kleinschreibung eines Strings umkehren

  Alt 25. Feb 2009, 11:34
Zitat von Sir Rufo:
Das war ja auch zu erwarten ... nicht weil du es gemacht hast
Doch, liegt an mir bzw. meiner Art zu programmieren. Ich sehe den Code oft zu oberflächlich... aber da ich nichts kommerziell entwickle, darf ich das.

Mit himitsus Auflösung wird es deutlich, so sehe ich es dann auch.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Groß u. Kleinschreibung eines Strings umkehren

  Alt 25. Feb 2009, 11:46
Ich arbeite auch meistens nicht kommerziell, das aktuelle Projekt ist sogar nur für mich alleine

Aber man lernt mit der Zeit und auch du wirst es in Zukunft (irgendwann) mal besser machen
(hab ja auch schon einige Jährchen an Lernprozessen und Fehlschlägen hinter mir)
Und wie gesagt, es funktionierte dennoch und das ist doch auch schonmal etwas
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#17

Re: Groß u. Kleinschreibung eines Strings umkehren

  Alt 25. Feb 2009, 11:56
Ob das noch besser wird

Programmier seit 1993 in Pascal (Turbo Pascal 6.0), allerdings mit teilweise monatelangen Pausen dazwischen. Da muss man wohl die Nettozeit sehen. Hab' nur im Moment wieder eine aktive Phase, weil ich mir eine Anwendung mit einer SQL-Datenbank schreibe.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Groß u. Kleinschreibung eines Strings umkehren

  Alt 25. Feb 2009, 12:01
Warum weißt ihr alle schon gleich am Anfang Result einen Wert zu? Damit verliert der Compiler das EAX Register für den Rückgabewert. Wenn ihr eine Zwischenvariable nutzt, kann der Compiler besser optimieren, weil er noch ein zusätzliches Register zur Verfügung hat. Also so habe ich bisher gedacht. Sollte ich falsch liegen, bitte meine Aussage korrigieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Groß u. Kleinschreibung eines Strings umkehren

  Alt 25. Feb 2009, 12:04
Wer sagt, daß Result immer (wärend der Laufzeit der Prozedur) in EAX liegt?

der Compiler legt es auch gerne mal auf'm Stack ab und kopiert erst am Ende nach EAX

PS: der Compiler verschiebt doch auch (oftmals) beim Start der Procedur die Parameter von den Registern auf den Stack.



OK, Turbo Pascal kenn ich auch noch ... sogar 'ne Zeit lang Basic/QBasic , aber CCBasic war wieder nett
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#20

Re: Groß u. Kleinschreibung eines Strings umkehren

  Alt 25. Feb 2009, 12:09
Zitat von Luckie:
Warum weißt ihr alle schon gleich am Anfang Result einen Wert zu?
Gemacht habe ich das, weil ich damit Result gleich richtig initialisiert hatte (auch bei Leerstring) und dazu kommt meine Manie, immer so wenig wie möglich Variablen zu verwenden.

Meine Priorität liegt wohl mehr auf "Übersichtlich" als "Effizient"

PS: Vor Pascal war eine kurze Zeit Basic for GEM-Desktop, also Windows-Programmierung vor Windows.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 10:54 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