![]() |
Aus "Result" lesen
Hallo,
heute hat mein Lehrer gemeint, dass man das:
Delphi-Quellcode:
nich machen sollte.
function X: Typ;
begin Result := 7; ... if Result = 7 //Darf man hier aus Result lesen? then ... end; Warum nicht? Und wenn es verboten wäre, wieso meldet es der Compiler nicht? Danke für Informationen. |
Re: Aus "Result" lesen
Hi Sebastian,
sei einfach etwas aufmüpfig und mache es doch. Natürlich nur, wenn dein Lehrer wegschaut... Grüße vom marabu |
Re: Aus "Result" lesen
ja, so wird's wahrscheinlich ausgehen.
Aber ich würde gern wissen, ob es dafür einen Grund gibt. |
Re: Aus "Result" lesen
Ich sehe keine Grund auf Result zuzugreifen, frage ihn doch mal warum :?:
|
Re: Aus "Result" lesen
@Sebastian: Nicht wirklich. Da das Knausern mit Hauptspeicher heutzutage eine veraltete Tugend ist, wird der Lehrer vielleicht aus didaktischen Gründen Wert darauf legen, dass du grundsätzlich sprechende Namen für deine Variablen verwenden sollst.
marabu |
Re: Aus "Result" lesen
Ich denke, das Problem ergibt sich bei Betrachtung anderer Programmiersprachen. Schlagt mich, wenn ich falsch liege, aber soweit ich mich erinnere, erfolgt bei zB PHP bei Aufruf von
Code:
(was ja in gewisser Hinsicht dem Delphi-Return entspricht) ein verlassen der Funktion.
return a;
In Delphi kannst du aber guten Gewissens bereits am Anfang der Funktion dem Result etwas zuweisen. Das wird sogar sehr häufig verwendet. Nicht zuletzt, um nicht extra eine neue Variabel deklarieren und zuweisen zu müssen. |
Re: Aus "Result" lesen
Es ist nicht verboten.
Man sollte nur versuchen, das Result so spät als möglich zuzuweisen. Grund: bei frühzeitiger Zuweisung an Result wird ein wertvolles Prozessorregister für andere Aufgaben blockiert.
Delphi-Quellcode:
// Beispiel
Result := False; a := ... b := ... if a > b then Result := True; // besser a := ... b := ... if a > b then Result := True else Result := False; |
Re: Aus "Result" lesen
Tatsächlich hat Borland die "automatische " Variable Result auch dazu eingefügt damit man darauf zugreifen kann. Also sollt mans auch machen.
In anderen Sprachen gibts sowas leider nicht. das könnte der einzige Grund für eine Lehrkraft (-h+e) sein um so eine Aussage zu fällen. Aber dann soll er den Grund auch nennen. DerDan |
Re: Aus "Result" lesen
Also ich finde das mit Result in vielen Fällen sehr praktisch.
Delphi-Quellcode:
Wozu sollte ich hier jetzt noch extra eine Zählvariable einführen? Geht doch so viel schneller, einfacher und meiner Meinung nach auch eindeutiger.
function IndexOf(a : Array of String; str : String) : Integer;
Begin Result := high(a); While (Result >= low(a)) and (a[Result] <> str) Do dec(Result); End; //Edit: Am besten du fragst deinen Lehrer mal nach dem Grund für seine Aussage. Ich gehe mal wirklich davon aus, daß es mit anderen Programmiersprachen zu tun hat. Und dann sag ihm, daß es in Delphi sehr wohl geht und auch seine praktische Anwendung haben kann. |
Re: Aus "Result" lesen
Kann es sein, dass ihr mit Absicht Shmias Beitrag ignoriert oder kapiert ihr ihn nur nicht? :gruebel:
|
Re: Aus "Result" lesen
Zitat:
Nice 2 know ... wenn das so ist Stricke ich wohl mal n paar (alte) Functionen bissl um ^^ @Robert_G: Thanks ... ohne dich hätt ich den Post doch glatt übersprungen/übersehen ^^ |
Re: Aus "Result" lesen
Inwiefern ignoriere ich shmias Beitrag? Ich habe nur nichts dazu gesagt... Natürlich hat er da recht. Nur benutze ich eben Result als Variable auch nur, wenn ich sie brauche, wie eben in meinem Beispiel. Später kann ich dort Result nicht mehr zuweisen, ohne eine andere Variable zu benutzen.
Und generell weise ich Werte auch erst dann zu, wenn sie gebraucht werden, und selten am Anfang einer Methode. Aber inwiefern widersprechen DerDans und mein Post shmia? :gruebel: Oder willst du nur wieder rumtrollen? :lol: |
Re: Aus "Result" lesen
Zitat:
Ich meine, muss ich meine ganzen Funktionen jetzt umstellen? Ich benutze sehr häufig die Result-Variable in der Funktion. :pale: René |
Re: Aus "Result" lesen
Zitat:
Delphi-Quellcode:
Entschuldigung, konnte nicht widerstehen. :angel:
// Beispiel
Result := False; a := ... b := ... if a > b then Result := True; // besser a := ... b := ... Result := (a > b); MfG freak |
Re: Aus "Result" lesen
Zitat:
Delphi-Quellcode:
:gruebel:
Result := a > b;
Aber Egal... Nun würd mich aber interessieren, in wie weit sich das auf die Performance auswirkt, sprich Result benutzen im Gegensatz, das Result nur am Ende Zuzuweisen... Meine Meinung nach nimmt sich dass nichts, lass mich aber gern eines besseren beleren... Bye Edit: da war wohl freak4fun schneller... |
Re: Aus "Result" lesen
Zitat:
Zitat:
Ne iss klar... Ganz vergessen: Wenn man mit dieser, hier oft praktizierten, Quick'nDirty-BlossNichtNachdenken-"Einfachheit" nicht einverstanden ist, ist man gleich ein Troll. Wie konnte ich das nur vergessen? :wall: |
Re: Aus "Result" lesen
Zitat:
Du wirfst halt ständig mit Kommentaren um dich, die man eigentlich nur als provozierend auffassen kann. Und ich zähle meinen Post nicht zu "Quick'nDirty-BlossNichtNachdenken-"Einfachheit"" :evil: Ich habe shmia nicht widersprochen, aber was für einen Effekt hätte es gehabt, extra noch zuzustimmen? :gruebel: Ich habe SebE nur ein Beispiel gegeben, wo man Result in der von seinem Lehrer abgelehnten Weise einsetzen kann, und wie ich es auch tue. Denn ich finde es so praktisch und habe noch nie bemerken können, daß dadurch die Leistung meines PCs auch nur minimalst geschmälert wurde. :roll: Also wenn du was zu sagen hast, dann tu das bitte sachlich und auf eine Weise, die einem nicht gleich zeigt, daß du alle außer dir für komplett unfähig hältst. Und wenn du schon so posten willst, dann vertrag auch bitte eine etwas ironische Antwort :roll: Wer austeilen will, muß auch einstecken können... |
Re: Aus "Result" lesen
Immer mit der Ruhe :angel: ! Soll doch jeder so programmieren wie er will - Hauptsache es funktioniert :zwinker: !
Auch ich nutzte "Result" oft schon innerhalb der Funktion und nicht erst am Ende. Ich bin auch nicht der Meinung, dass der dadurch entsehende Zeitverlust für mich signifikant ist! Wer es so nicht mag, soll es eben lassen. Interessant war der Hinweis allerdings schon :!: ! |
Re: Aus "Result" lesen
Zitat:
Somit sehe ich eigentlich keinen Grund, warum man result nicht wie eine normale Variable einsetzen sollte. |
Re: Aus "Result" lesen
Zitat:
|
Re: Aus "Result" lesen
Zitat:
Ehrlich gesagt, mach ich das auch ab und zu, aber wenn ich brillieren muss (weil ein pingeliger Kollege mir über die Schultern schaut), dann mach ich es auf die 'unständliche' Art. |
Re: Aus "Result" lesen
Häßlich? Ich find das so viel schöner, als mit diesen ekelhaften "if then else"-Gehabe ;)
|
Re: Aus "Result" lesen
Ist ja auch Jacke wie Hose. Es wird eh optimiert. :gruebel:
MfG freak |
Re: Aus "Result" lesen
Und gehört, so oder so, nicht zum Thema des Threads.
|
Re: Aus "Result" lesen
Zitat:
öhm Ich finde die kurze Form lesbarer als die lange mit If-Abfrage...
Delphi-Quellcode:
Und sie ist kürzer...
If a > b Then Result := True
Else Result := False; // oder Result := a > b; Im Grunde ist es eh egal, da das eh zur kurzform optimiert wird :zwinker: Bye |
Re: Aus "Result" lesen
Zitat:
Mit IF
Code:
Ohne IFs
cmp edx, eax
jnl +$03 mov al, $01 ret
Code:
Ich kenne mich zwar net mit Assembler aus, aber ohne IF ists kürzer und ggf. auch schneller.
cmp edx, eax
setl al ret mfG mirage228 |
Re: Aus "Result" lesen
Hmm wird doch net wegoptimiert :gruebel:
Dementsprechent logischerweise ohne If schneller :angel2:
Delphi-Quellcode:
cmp edx, eax // Der Vergleich a > b
jnl +$03 // "Sprung wenn größer" zu der Zeile "ret" mov al, $01 // Wenn nicht setze al um... ret
Delphi-Quellcode:
soweit denk ich mir das mit meinen beschränkten ASM-Kenntnissen
cmp edx, eax // Der Vergleich a > b
setl al // Das weiß ich net... ret Bye |
Re: Aus "Result" lesen
Könnt ihr jetzt bitte zum Thema des Threds zurück kommen :warn:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz