AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Noten als enum auslegen

Noten als enum auslegen

Ein Thema von EWeiss · begonnen am 16. Apr 2018 · letzter Beitrag vom 17. Apr 2018
Antwort Antwort
Seite 3 von 3     123
Benutzerbild von EWeiss
EWeiss

Registriert seit: 16. Okt 2010
4.700 Beiträge
 
Delphi 2010 Architect
 
#21

AW: Noten als enum auslegen

  Alt 17. Apr 2018, 00:20
Zitat:
Ja, wenn man denn einen der vielen richtigen Wege geht.
Seltsam nur das bei mir die richtigen Ergebnisse ausgegeben werden.

Siehe shot

oben A ,B genau das was erwartet wird.

Delphi-Quellcode:
for k = 0 to xx do
begin

end
Result := bla; // und hier das result. dort wird ausgewertet wenn die schleife beendet wird auf welchen weg auch immer.
Keine Ahnung was du willst?
Zitat:
Die Zeile Result := sResult wird nicht ausgeführt.
Wird immer ausgeführt.

Zitat:
Eine Zeile tiefer steht ein "end;", und unter die Zeile mit dem "end;" soll es gebracht werden, also 1 + 1 = 2 Zeilen tiefer.
Keine Ahnung was du da rechnest oder meinst zu sehen.
Wie ich schon sagte 1 zeile tiefer.

Delphi-Quellcode:
function TransposeChord(sChord: string; Pitch: Integer): string;
var
  sResult: string;
  K, MaxK, Found: Integer;
begin

  sResult := sChord;
  MaxK := 12;

  for K := 0 to (MaxK - 1) do
  begin
    if cTranspose[TTranspose(K)] = sChord then
    begin
      Found := (K + Pitch) mod MaxK;
      if Found < 0 then
        inc(Found, MaxK);

      sResult := cTranspose[TTranspose(Found)];
      break;
    end;
  end;
  Result := sResult;
end;
EIne Zeile tiefer vergleiche es!
Vorher stand es über den End nun drunter.

gruss

Geändert von EWeiss (17. Apr 2018 um 00:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
446 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#22

AW: Noten als enum auslegen

  Alt 17. Apr 2018, 00:35
ot
Hör auf so viele geniale Bilder zu Zaigen, da werd ich blass vor Neid! (soll ein Kompliment sein)
/ot
Gruss vom KodeZwerg
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
749 Beiträge
 
Delphi XE2 Professional
 
#23

AW: Noten als enum auslegen

  Alt 17. Apr 2018, 01:39
Zitat:
Ja, wenn man denn einen der vielen richtigen Wege geht.
Seltsam nur das bei mir die richtigen Ergebnisse ausgegeben werden.

Siehe shot

oben A ,B genau das was erwartet wird.

Delphi-Quellcode:
for k = 0 to xx do
begin

end
Result := bla; // und hier das result. dort wird ausgewertet wenn die schleife beendet wird auf welchen weg auch immer.
Keine Ahnung was du willst?
Zitat:
Die Zeile Result := sResult wird nicht ausgeführt.
Wird immer ausgeführt.

Zitat:
Eine Zeile tiefer steht ein "end;", und unter die Zeile mit dem "end;" soll es gebracht werden, also 1 + 1 = 2 Zeilen tiefer.
Keine Ahnung was du da rechnest oder meinst zu sehen.
Wie ich schon sagte 1 zeile tiefer.

Delphi-Quellcode:
function TransposeChord(sChord: string; Pitch: Integer): string;
var
  sResult: string;
  K, MaxK, Found: Integer;
begin

  sResult := sChord;
  MaxK := 12;

  for K := 0 to (MaxK - 1) do
  begin
    if cTranspose[TTranspose(K)] = sChord then
    begin
      Found := (K + Pitch) mod MaxK;
      if Found < 0 then
        inc(Found, MaxK);

      sResult := cTranspose[TTranspose(Found)];
      break;
    end;
  end;
  Result := sResult;
end;
EIne Zeile tiefer vergleiche es!
Vorher stand es über den End nun drunter.

gruss
Ich hatte mich auf die Funktion in deinem Beitrag #10 bezogen.
In der stand das Result:=sResult; innerhalb der For-Schleife, wurde also nicht ausgeführt, wenn die For-Schleife mit Break verlassen wird.
Ich hatte dann u.A. vorgeschlagen das Result:=sResult; 2 Zeilen nach unten, also hinter die For-Schleife zu verschieben.
Zu diesem Vorschlag hattest du in #19 gesagt
Zitat:
Na ja eine Zeile tiefer.

Wird aber in jedem fall aufgerufen auch wenn ich es so belassen würde.
er Wert wird also in jedem fall richtig übergeben.
Und hierzu hatte ich angemerkt, dass das nicht richtig ist.

Hierzu sagst du
Zitat:
Seltsam nur das bei mir die richtigen Ergebnisse ausgegeben werden.

Siehe shot

oben A ,B genau das was erwartet wird.
Welcher "Shot" ?
Und ja klar bringt die von dir jetzt gezeigte Funktion richtige Ergebnisse, denn sie enthält ja auch die von mir vorgeschlagenen Korrekturen, insbesondere die, das Result:=sResult; hinter die For-Schleife zu verschieben.
Mein Einwand bezog sich aber auf deinen Kommentar, dass auch dann wenn man das Result:=sResult; so belässt (also innerhalb der For-Schleife), die richtigen Werte übergeben werden.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von EWeiss
EWeiss

Registriert seit: 16. Okt 2010
4.700 Beiträge
 
Delphi 2010 Architect
 
#24

AW: Noten als enum auslegen

  Alt 17. Apr 2018, 01:44
Zitat:
Mein Einwand bezog sich aber auf deinen Kommentar, dass auch dann wenn man das Result:=sResult; so belässt (also innerhalb der For-Schleife), die richtigen Werte übergeben werden.
Nein wenn ich es da belassen hätte wären die werte falsch. Korrekt.

Na ok dann habe ich dich falsch verstanden. Entschuldige bitte.
Danke!

Zitat:
Welcher "Shot" ?
Habe ihn wieder gelöscht.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
34.254 Beiträge
 
Delphi XE3 Professional
 
#25

AW: Noten als enum auslegen

  Alt 17. Apr 2018, 10:29
c_, c, c¯, c⌂, cʭ, c败

Ob auch sowas als Bezeichner erlaubt ist, hab ich jetzt nicht getestet.
[edit] Die ersten 4 sind erlaubt, seit 2009.
♬ ♮ ♫ ♯ ♮
https://unicode.org/charts/PDF/U1D100.pdf
https://de.wikipedia.org/wiki/Unicod...schriftzeichen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (17. Apr 2018 um 11:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von EWeiss
EWeiss

Registriert seit: 16. Okt 2010
4.700 Beiträge
 
Delphi 2010 Architect
 
#26

AW: Noten als enum auslegen

  Alt 17. Apr 2018, 11:19
c_, c, c¯, c⌂, cʭ, c败

Ob auch sowas als Bezeichner erlaubt ist, hab ich jetzt nicht getestet.
[edit] Die ersten 4 sind erlaubt.
♬ ♮ ♫ ♯ ♮
https://unicode.org/charts/PDF/U1D100.pdf
https://de.wikipedia.org/wiki/Unicod...schriftzeichen
Was es nicht alles gibt

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General
Online

Registriert seit: 16. Jan 2004
Ort: Bendorf
4.712 Beiträge
 
Delphi 2010 Professional
 
#27

AW: Noten als enum auslegen

  Alt 17. Apr 2018, 11:48
c_, c, c¯, c⌂, cʭ, c败

Ob auch sowas als Bezeichner erlaubt ist, hab ich jetzt nicht getestet.
[edit] Die ersten 4 sind erlaubt, seit 2009.
♬ ♮ ♫ ♯ ♮
https://unicode.org/charts/PDF/U1D100.pdf
https://de.wikipedia.org/wiki/Unicod...schriftzeichen
Ich hab irgendwie Probleme die einzubinden.
Weder direkt per Copy&Paste noch Caption := #$1D120; funktioniert.
Ich bekomme da nur Kästchen. Hab auch ein paar gängige Schriftarten ausprobiert
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Daniel
(Administrator)

Registriert seit: 30. Mai 2002
Ort: Hamburg
14.119 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#28

AW: Noten als enum auslegen

  Alt 17. Apr 2018, 11:52
Das hat mit den Noten jetzt aber weniger zutun.
Daniel R. Wolf
Admin Delphi-PRAXiS
mit Grüßen aus Hamburg
>> http://forentage.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
34.254 Beiträge
 
Delphi XE3 Professional
 
#29

AW: Noten als enum auslegen

  Alt 17. Apr 2018, 12:12
Ja, nicht alle Zeichen sind überall (gut) sichtbar.
Bei ♬ ♮ ♫ ♯ ♮ sehe ich im XE den Letzten auch nur als Kästchen, weil es in der Schrift dieses Zeichen nicht gibt und keine Umleitung zu einer anderen Schrift für dieses Zeichen registriert wurde.
Und dazu kommt dann noch, dass bei der gleichbreiten rechteckigen kleinen Schrift im Editor vieles nicht erkennbar ist.

Aber grundsätzlich ging es ja nur darum "Noten" als Bezeichner zu verwenden, was prinzipiell geht.

Bezeichner unterliegen einer gewissen Syntax (vor dem Unicode-Compiler war sie noch recht simpel, aber inzwischen ist wesentlich mehr erlaubt)

Als RegEx ^[A-Za-z_][A-Za-z_0-9]*$ für Delphi 7
und für ab D2009 ^([[:alnum:]]|_)([[:alnum:]]|_)*$ .
Delphi-Quellcode:
Aus SysUtils des XE, aber groß wird sich daran nicht viel gändert haben.

function IsValidIdent(const Ident: string; AllowDots: Boolean): Boolean;
{$IFNDEF UNICODE}
const
  Alpha = ['A'..'Z', 'a'..'z', '_'];
  AlphaNumeric = Alpha + ['0'..'9'];
  AlphaNumericDot = AlphaNumeric + ['.'];
var
  I: Integer;
begin
  Result := False;
  if (Length(Ident) = 0) or not (Ident[1] in Alpha) then Exit;
  if AllowDots then
    for I := 2 to Length(Ident) do
      begin
        if not (Ident[I] in AlphaNumericDot) then Exit
      end
  else
    for I := 2 to Length(Ident) do if not (Ident[I] in AlphaNumeric) then Exit;
  Result := True;
end;
{$ELSE UNICODE}
  function Alpha(C: Char): Boolean; inline;
  begin
    Result := TCharacter.IsLetter(C) or (C = '_');
  end;

  function AlphaNumeric(C: Char): Boolean; inline;
  begin
    Result := TCharacter.IsLetterOrDigit(C) or (C = '_');
  end;

  function AlphaNumericDot(C: Char): Boolean; inline;
  begin
    Result := TCharacter.IsLetterOrDigit(C) or (C = '_') or (C = '.');
  end;

var
  I: Integer;
begin
  Result := False;
  if (Length(Ident) = 0) or not Alpha(Ident[1]) then
    Exit;
  if AllowDots then
    for I := 2 to Length(Ident) do
      begin
        if not AlphaNumericDot(Ident[I]) then
          Exit
      end
  else
    for I := 2 to Length(Ident) do
      if not AlphaNumeric(Ident[I]) then
        Exit;
  Result := True;
end;
{$ENDIF UNICODE}
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  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 · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:12 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