Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Prism Break unter .NET? (https://www.delphipraxis.net/53232-break-unter-net.html)

Master_BB 12. Sep 2005 18:59


Break unter .NET?
 
Hallo,
ich programmiere jetzt schon seit einiger Zeit nur noch
mit dem .NET Framework und mir ist aufgefallen das
ich bisher immernoch das alte Break an und an benutze
das es so nicht im Framework gibt sondern nur
im Borland zeug für .NET.

Weiß jemand wie man Breaks in .NET umsetzt?

Greetz

Robert_G 12. Sep 2005 19:34

Re: Break unter .NET?
 
In C#? break
In VB? Exit
In Chrome? break
In Brainfuck.Net? [Ersetze mit Irgendwas, dass ausgesprochen einem staubigen Taschentuchextrakt entsprechen würde]
Man könnte glatt annehmen, dass break weiterhin nur ein Sprung ist. ;)

Master_BB 12. Sep 2005 19:38

Re: Break unter .NET?
 
in Delphi .NET meine ich.
wenn ich dort Break in den code schreibe
und mit der maus drüber gehe dann steht da Borland.xxx.xxx
und das heißt ich wandle nicht mehr nur auf
dem .NET Framework

Robert_G 12. Sep 2005 19:50

Re: Break unter .NET?
 
Zitat:

Zitat von Master_BB
in Delphi .NET meine ich.
wenn ich dort Break in den code schreibe und mit der maus drüber gehe dann steht da Borland.xxx.xxx und das heißt ich wandle nicht mehr nur auf dem .NET Framework

Krass! :shock:
Kannst du mal eine kleine Beispiel Assembly (D.Net Package) anhängen?
Muss einfach nur das hier drinstecken:
Delphi-Quellcode:
type
  SomeClass = class
  public
    procedure DoSomething;
  end;

implementation

procedure SomeClass.DoSomething;
begin
  while true do
    break;
end;

Speedmaster 12. Sep 2005 19:59

Re: Break unter .NET?
 
Da fiel mir was auf, als ich mir mal angucken wollte wie Brainf*ck unter .NET aussieht:
http://bluesorcerer.net/esoteric/bf.html

Zitat:

When executing the Brainf*ck program prime.b (or the Ook# equivalant prime.ook) the execution times on the same machine using the same OS for primes up to 200 are on average as follows (per May 26th 2002) :

* ms.net : 9 seconds.
* mono : 30 seconds.
* mint : 2150 seconds.

Memory usage always stays the same for all environments, about 30KB.
Ich hoffe die Daten haben sich inzwischen geändert, den sonst kann man ja Mono Vergessen! :mrgreen:

Christian S. 12. Sep 2005 20:05

Re: Break unter .NET?
 
Hallo!

Als Assembly wird Borland.System.Delphi angezeigt. Folgender Delphi-Code (etwas komplizierter, damit die Optimierung nicht stört)
Delphi-Quellcode:
interface

type
  SomeClass = class
  public
    procedure DoSomething(a : Boolean);
  end;

implementation

procedure SomeClass.DoSomething(a : Boolean);
begin
  while a do
    if a = true then
      break;
end;
ergibt laut Lutz Roeder's Reflector:
Code:
public void DoSomething(bool a)
{
      while (a)
      {
            if (a)
            {
                  return;
            }
      }
}
Ist also "unauffällig".

Grüße
Christian

tommie-lie 12. Sep 2005 20:23

Re: Break unter .NET?
 
Zitat:

Zitat von Christian S.
Delphi-Quellcode:
// ...
  while a do
    if a = true then
      break;
end;
ergibt laut Lutz Roeder's Reflector:
Code:
public void DoSomething(bool a)
{
      while (a)
            if (a)
                  return;
}

Break ist aber nur in diesem Fall gleichbedeutend mit return, oder irre ich?

Speedmaster 12. Sep 2005 20:28

Re: Break unter .NET?
 
Nicht ganz, mit return kann man auch Werte zurückgeben( Wieder ein Vorteil von C# ). Allerdings gibt es auch break!

jbg 12. Sep 2005 20:30

Re: Break unter .NET?
 
Zitat:

Zitat von Speedmaster
Nicht ganz, mit return kann man auch Werte zurückgeben( Wieder ein Vorteil von C# ).

Mit Result kann man den Rückgabewert ständig ändern und muss nicht laufend eine Hilfsvariable nutzen (Wieder ein Vorteil von Delphi.NET). Das gibt sich nichts.

Christian S. 12. Sep 2005 20:31

Re: Break unter .NET?
 
Äh, ja. Hier noch ein anderes Beispiel:
Delphi-Quellcode:
function SomeClass.DoSomething(a : Boolean) : Integer;
begin
  result := 2;
  while a do
    if a = true then
      break;
  result := result * 2;
end;
Code:
public int DoSomething(bool a)
{
      int num1 = 2;
      while (a)
      {
            if (a)
            {
                  break;
            }
      }
      return (num1 << 1);
}
Auch keine bösen Sachen drin :zwinker:

Speedmaster 12. Sep 2005 20:42

Re: Break unter .NET?
 
Zitat:

Zitat von jbg
Zitat:

Zitat von Speedmaster
Nicht ganz, mit return kann man auch Werte zurückgeben( Wieder ein Vorteil von C# ).

Mit Result kann man den Rückgabewert ständig ändern und muss nicht laufend eine Hilfsvariable nutzen (Wieder ein Vorteil von Delphi.NET). Das gibt sich nichts.

Siehe mein Kollege oben! Allerdings bin zumindestens ich mit C# schneller!

tommie-lie 12. Sep 2005 21:03

Re: Break unter .NET?
 
Zitat:

Zitat von Christian S.
Auch keine bösen Sachen drin :zwinker:

Jupp, jetzt glaub' ich's dir :mrgreen:

@jbg, Speedmaster: Ihr seid vielleicht lustig :mrgreen:

Robert_G 12. Sep 2005 21:21

Re: Break unter .NET?
 
Mit Chrome habe ich result und kann mit exit(Wert) sofort einen Wert zurückgeben, soviel zu "meiner ist länger". :stupid:

@MasterDings
Könntest du vielleicht den Code hier zeigen, der das von dir verursachte zeigt. Das wäre zu komisch um einen Sinn zu machen...

omata 12. Sep 2005 21:41

Re: Break unter .NET?
 
Keine Bösen Sachen drin? Und dann steht da break. Böser geht es nicht!
halt, exit, break, goto... sind alles Befehle einer unstrukturierten Programmierung.
Schön, dass es das in NET nicht mir gibt. Ich glaube ich könnte mich mit NET anfreunden.

MfG
Thorsten

tommie-lie 12. Sep 2005 21:45

Re: Break unter .NET?
 
Zitat:

Zitat von omata
Keine Bösen Sachen drin? Und dann steht da break. Böser geht es nicht!
halt, exit, break, goto... sind alles Befehle einer unstrukturierten Programmierung.

Und wie willst du sonst in einem absolut unerwarteten Fall aus einer Schleife springen?

Zitat:

Zitat von omata
Schön, dass es das in NET nicht mir gibt. Ich glaube ich könnte mich mit NET anfreunden.

Hier geht es um .NET ;-)
Oder übersieht mein Detektor die unsichtbaren Ironie-Tags? :gruebel:

LarsMiddendorf 12. Sep 2005 21:46

Re: Break unter .NET?
 
Zitat:

result und kann mit exit(Wert)
Kaum zu glauben, dass sie wirklich fast alles eingebaut haben, was man sich mal so gewünscht hätte.
Schade nur dass es keine große Firma ist und man nicht weiß, ob die Entwicklung auf absehbare Zeit weiter geht.

omata 12. Sep 2005 21:52

Re: Break unter .NET?
 
@tommie-lie...

Nein, du übersieht keine Ironie-Zeichen. Sie sind wirklich nicht da.

Eine Schleife vorzeitig beenden? Ganz einfach, wenn eine Schleife vorzeitig beendet werden muss oder kann, dann ist es keine for-Schleife. while oder repeat sind für soetwas vorhanden.
Bei einem undefinierten Zustand (der also nur in einem sehr speziellen Fall eintritt), löst man eine Exception aus. So ist nunmal das Fehlerkonzept von Delphi.

MfG
Thorsten

Robert_G 12. Sep 2005 21:55

Re: Break unter .NET?
 
Zitat:

Zitat von LarsMiddendorf
Zitat:

result und kann mit exit(Wert)
Kaum zu glauben, dass sie wirklich fast alles eingebaut haben, was man sich mal so gewünscht hätte.
Schade nur dass es keine große Firma ist und man nicht weiß, ob die Entwicklung auf absehbare Zeit weiter geht.

*ROFL* alles was sinnvoll genug ist, dürfte seinen Weg in Chrome gefunden haben oder wird ihn finden.
Frage mich bitte nicht was alles sonst löscht man mir hier den Account. :duck: :mrgreen: Schaue einfach mal hier und packe noch einiges hinzu, dass erst mit 1.5 öffentlich zugänglich sein wird.

jbg 12. Sep 2005 21:55

Re: Break unter .NET?
 
Zitat:

Zitat von LarsMiddendorf
Zitat:

result und kann mit exit(Wert)
Kaum zu glauben, dass sie wirklich fast alles eingebaut haben, was man sich mal so gewünscht hätte.

FreePascal hat das übrigens auch. Und das schon vor Chrome. :mrgreen:

Speedmaster 12. Sep 2005 22:19

Re: Break unter .NET?
 
Zitat:

Zitat von Robert_G
Zitat:

Zitat von LarsMiddendorf
Zitat:

result und kann mit exit(Wert)
Kaum zu glauben, dass sie wirklich fast alles eingebaut haben, was man sich mal so gewünscht hätte.
Schade nur dass es keine große Firma ist und man nicht weiß, ob die Entwicklung auf absehbare Zeit weiter geht.

*ROFL* alles was sinnvoll genug ist, dürfte seinen Weg in Chrome gefunden haben oder wird ihn finden.
Frage mich bitte nicht was alles sonst löscht man mir hier den Account. :duck: :mrgreen: Schaue einfach mal hier und packe noch einiges hinzu, dass erst mit 1.5 öffentlich zugänglich sein wird.

Etwas vermisse ich noch an Chrome:
Kein Interface mehr, sondern das direkte Einfügen von Proceduren, Variablen,... in eine Klasse. Als Beispiel:

Delphi-Quellcode:

namenspace Blablabla

KlasseXXX = class
  public method Hello;
  begin
    Console.WriteLine('Hello World');
  end;
end;
Das finde ich extrem Praktisch!

Robert_G 12. Sep 2005 22:28

Re: Break unter .NET?
 
Zitat:

Zitat von Speedmaster
Etwas vermisse ich noch an Chrome:
Kein Interface mehr, sondern das direkte Einfügen von Proceduren, Variablen,... in eine Klasse.

Dem Irrglauben bin ich auch lange gefolgt.
Aber schaue dir mal virtuelle Properties oder properties an sich in C# an. Oder explizites Implementieren von Interfaces.
Nachdem man eine Weile C# programmiert hat, ist man froh über eine Interface section. ;)

Master_BB 13. Sep 2005 00:30

Re: Break unter .NET?
 
ok also gehe ich jetzt einfach davon aus
das das .NET Framework nativ kein Break, Continue usw kennt...
generell stimmts das man das break durch eine repeat oder whileschleife
oder exception auch umsetzen kann, jedoch macht sowas ja mehr arbeit
als einfach break hinzuschreiben.
aber was tut man nicht alles für einen anständigen stil...

Christian S. 13. Sep 2005 13:23

Re: Break unter .NET?
 
Zitat:

Zitat von Master_BB
ok also gehe ich jetzt einfach davon aus
das das .NET Framework nativ kein Break, Continue usw kennt...

Wie kommst Du da drauf? Wie Du an den von mir geposteten Quelltexten siehst, ist das "break" auch unter .NET keine Delphi-Spezialität.

Robert_G 13. Sep 2005 13:45

Re: Break unter .NET?
 
Zitat:

Zitat von Christian S.
Zitat:

Zitat von Master_BB
ok also gehe ich jetzt einfach davon aus
das das .NET Framework nativ kein Break, Continue usw kennt...

Wie kommst Du da drauf? Wie Du an den von mir geposteten Quelltexten siehst, ist das "break" auch unter .NET keine Delphi-Spezialität.

Richtig, sind ja nur Sprünge. Der Compiler wird die wohl so auslegen, dass der optimalste Ablauf gewährleistet wird. Ob er nun zurück zum Caller hüpft, Labels einbaut oder was auch immer. In deinem Code wird's dich kaum stören.
@MasterBB
Diese D.Net RTL Funktion hatte mich nur ziemlich verwirrt, deshalb fragte ich ja, ob du den Code anhängen könntest, der das verursacht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 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