AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Geocaching Tool: Ermitteln des Wordwerts und dessen Quersumme zu berechnen
Thema durchsuchen
Ansicht
Themen-Optionen

Geocaching Tool: Ermitteln des Wordwerts und dessen Quersumme zu berechnen

Ein Thema von Luckie · begonnen am 6. Okt 2012 · letzter Beitrag vom 8. Okt 2012
Antwort Antwort
Benutzerbild von Luckie
Luckie
Registriert seit: 29. Mai 2002
GEOToolsWords

GEOToolsWords ist ein Programm, um den Wortwert und dessen Quersumme zu berechnen. Beispiel: Der Wortwert von AB, wenn A = 1 ist, wäre 3. Der Wortwert von HALLO wäre 48 und die Quersumme dann 12. Leerzeichen werden entfernt und das Wort in Großbuchstaben umgewandelt, so wie es beim Geocaching üblich ist.

Die Oberfläche sollte selbsterklärend sein.

Entstanden ist es aufgrund meines neue Hobbies Geocaching. ich musste 55 mal den Wortwert und dessen Quersumme berechnen.
Angehängte Dateien
Dateityp: zip GEOToolsWords.zip (291,0 KB, 21x aufgerufen)
Ein Teil meines Codes würde euch verunsichern.
 
Amateurprofi

 
Delphi XE2 Professional
 
#2
  Alt 8. Okt 2012, 01:07
Hab ich mir mal angeschaut.
Das ganze wurde m.E. eher suboptimal umgesetzt.

NonAlpha-Zeichen werden in die Berechnung eingeschlossen, mit verwirrenden Ergebnissen.
Beispiel : Die Eingabe "." (Dezimalpunkt) führt zu einer Summe von 4294967278.
Nun kann man der Auffassung sein, es sei Sache des Anwenders, nur solche Zeichen einzugeben, die auch berechnet werden sollen, aber dann müsste man auch der Auffassung sein, dass z.B. Blanks nicht entfernt werden müssen.
Also : Wenn schon "Fehleingaben" erkannt werden, dann bitte konsequent.

Die mit der Ermittlung der Summe verbundenen Aktionen
- Blanks entfernen
- In UpperCase wandeln
- Umlaute entfernen (7 Mal das bummelige StringReplace)
sind alle höchst überflüssig, wenn man die Berechnung etwas besser gestaltet.

Wenn ich die Option "A=1" oder "A=26" klicke, dann erwarte ich, dass die aktuelle Eingabe neu bewertet wird.

Nun ja, ich will nicht nur meckern.
Deshalb nachstehend eine verbesserte Prozedur "Calc", die alle anderen Prozeduren in der Unit überflüssig macht und deutlich schneller arbeitet, wobei letzteres hier wohl irrelevant ist.
(Hoffentlich habe ich nichts übersehen).


Delphi-Quellcode:
PROCEDURE TGeoToolsWords.Calc(A1:boolean=true);
var n:integer; sum,digsum,corr:cardinal; s:AnsiString; p:PAnsiChar;
PROCEDURE Add(Value:AnsiChar); overload;
begin
   inc(n);
   s[n]:=Value;
   inc(sum,Ord(Value));
end;
PROCEDURE Add(Value1,Value2:AnsiChar); overload;
begin
   Add(Value1);
   Add(Value2);
end;
begin
   sum:=0;
   if FInputWord<>'then begin
      SetLength(s,Length(FInputWord)*2);
      p:=PAnsiChar(FInputWord);
      n:=0;
      repeat
         case p^ of
            'A'..'Z' : Add(p^);
            'a'..'z' : Add(AnsiChar(Ord(p^)-Ord('a')+Ord('A')));
            'Ä','ä'  : Add('A','E');
            'Ö','ö'  : Add('O','E');
            'Ü','ü'  : Add('U','E');
            'ß'      : Add('S','S');
         end;
         inc(p);
      until p^=#0;
      FInputWord:=Copy(s,1,n);
      dec(sum,n*(Ord('A')-1));
      if not A1 then sum:=n*27-sum;
   end;
   FSumLetters:=sum;
   digsum:=0;
   while sum>0 do begin
      inc(digsum,sum mod 10);
      sum:=sum div 10;
   end;
   FCrossSum:=digsum;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#3
  Alt 8. Okt 2012, 09:34
Danke für deine Kritik und die Verbesserung des Codes. Ich denke, das werde ich dem nächst in den Code übernehmen.
Michael
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:57 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