AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Weiterlernen

Ein Thema von teodorfon · begonnen am 12. Jul 2016 · letzter Beitrag vom 12. Aug 2016
Antwort Antwort
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Weiterlernen

  Alt 12. Jul 2016, 20:59
Erstmal Willkommen in der Delphi-PRAXIS

Wow, toll zu sehen das ich nicht der einzige bin der so Krank () im Kopf war um von sich aus gefallen an sowas zu finden und sich selbst an zu eignen. (War damals 10 und als ich mich hier angemeldet habe 11/12 Jahre alt lol)

Ich denke auch das man mit einfachem "Learning by doing" am schnellsten und für sich am besten voran kommt. Bücher sind heutzutage zu schnell veraltet und vieles findet man in der Delphi Language Reference und Sachen dazu findet man online genügend z.B. das sieht doch ziemlich simpel und brauchbar aus für den Anfang.

Natürlich kannst du auch immer hier nachfragen falls du nirgends Informationen dazu findest.

Freundliche Grüsse
Milos
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#2

AW: Weiterlernen

  Alt 12. Jul 2016, 21:56
1. Schön, das du etwas Spass am Programmieren gefunden hast
2. Schön, das du mit Pascal in Form von Delphi zurecht kommst
3. Schön, das du auch "alleine" weitermachen/weiter kommen willst

Meiner Erfahrung.. das Allerwichtigste: erhalte dir den Spaß !!!
Schnelle kleine Programme die dir selbst und anderen was zeigen können, sind anfangs wichtiger wie schönes internes Programmdesign was aber nur ein paar Textausgaben macht.
Wenn du irgendwann selbst erkennst, das du deinen Code strukturieren musst, weil du nach ein paar Monaten in deinem Quelltext nicht mehr durchblickst, dann ist das eine wichtige Erkenntnis, und dann macht auch das "säubern" / neu und "schön" schreiben des Programms Spass.

Wenn du Delphi im Kopf hast, solltest du in dein Hobby etwas Geld investieren. Hole dir ein aktuelles RadStudio Berlin 10.1pro als Schulversion für 165Eur. (das Geld ist nur zum Lernen investiert, denn offiziell darfst du kein eigenes Programm was du damit erstellt hast an andere weitergeben... auch wenn es weh tut, es ist als SSL trotzdem sehr PREISWERT!!!)

http://www.edv-buchversand.de/produc...ition%2C%20SSL

Wenn du später weißt was du machst und was du willst, kannst du immernoch die Opensource Sachen ala Lazerus,Freepascal,CodeTyphon dir anschauen und für Programme zur Weitergabe nutzen, bzw. einen Chef finden der dir eine Vollversion von Delphi kauft

(wenn du kein Geld für ne IDE ausgeben WILLST oder aus Prinzip nur mit Opensource und kostenloser Software arbeiten möchtest, dann wirst du mit Delphi/RadStudio nicht glücklich
  Mit Zitat antworten Zitat
teodorfon

Registriert seit: 12. Jul 2016
Ort: Bosnien und Herzegowina
17 Beiträge
 
#3

AW: Weiterlernen

  Alt 14. Jul 2016, 00:56
Abend alle,wollte jetzt kein thread für mein problem aufmachen,das lernen geht schon ein wenig voran aber leider weiss nicht genau warum mein "loop" (hoff dass der begriff gut gewählt ist) nicht funktioniert.

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if shape1.Left>=0 then begin
timer1.Interval:=100;
shape1.Left:=shape1.Left+30;
if shape1.Left=150 then timer1.Enabled:=false;
if timer2.Enabled=false then timer1.Enabled:=true; //geht nicht .____.
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
if timer1.Enabled=false then begin
timer2.Interval:=100;
shape1.left:=shape1.Left-30;
if shape1.Left=0 then timer2.Enabled:=false;
end;
end;
end.
Wollte ein wenig mit den Shapes rumspielen...

Geändert von TBx (14. Jul 2016 um 08:25 Uhr) Grund: Delphi-Tags gesetzt
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen

Registriert seit: 1. Dez 2003
Ort: Luterbach (CH)
693 Beiträge
 
Delphi 12 Athens
 
#4

AW: Weiterlernen

  Alt 14. Jul 2016, 01:19
- Verwende für Quelltexte im Forum möglichst immer die Delphi-Tags (Helm-Symbol)
- Rücke den Code möglichst sinnvoll ein, dies bringt nicht nur Dir eine bessere Übersicht.
- Direkte Überprüfung auf True oder False ist schlecht, besser Du verwendest folgende Form
Delphi-Quellcode:
if Timer1.Enabled then....
if NOT Timer1.Enabled then...
Zitat:
Delphi-Quellcode:
procedure tform1.timer1timer(sender: Tobject);
begin
  if shape1.left >= 0
  then begin
    timer1.interval := 100;
    shape1.left := shape1.left + 30;
    if shape1.left = 150 then timer1.enabled:=false;
    if timer2.enabled then timer1.enabled := true; //Macht keinen Sinn -> ev. falscher Timer?
  end;
end;

procedure tform1.timer2timer(sender: Tobject);
begin
  if timer1.enabled
  then begin
    timer2.interval := 100;
    shape1.left := shape1.left - 30;
    if shape1.left = 0 then timer2.enabled := false;
  end;
end;

end.
Die Procedure tform1.timer1timer wird aufgerufen, wenn der Timer1 aktiv ist und das definierte Intervall abgelaufen ist.
Insofern macht die beanstandete Zeile keinen Sinn - der Timer1 läuft ja bereits. Ich nehme mal an, dass Du eigentlich den Timer2 starten willst?
Roland

Geändert von blawen (14. Jul 2016 um 01:26 Uhr)
  Mit Zitat antworten Zitat
teodorfon

Registriert seit: 12. Jul 2016
Ort: Bosnien und Herzegowina
17 Beiträge
 
#5

AW: Weiterlernen

  Alt 14. Jul 2016, 01:30
Das problem ist das,das programm sich nicht "wiederholt" nachdem timer1 und timer2 einmal ausgeführt wurden stopt das programm...
if timer2.enabled = false then timer1.enabled:=true; //geht nicht .____. <---Mein versuch den loop zu wiederholen wen er einmal ausgeführt wurde.
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen

Registriert seit: 1. Dez 2003
Ort: Luterbach (CH)
693 Beiträge
 
Delphi 12 Athens
 
#6

AW: Weiterlernen

  Alt 14. Jul 2016, 01:55
Das problem ist das,das programm sich nicht "wiederholt" nachdem timer1 und timer2 einmal ausgeführt wurden stopt das programm...
if timer2.enabled = false then timer1.enabled:=true; //geht nicht .____. <---Mein versuch den loop zu wiederholen wen er einmal ausgeführt wurde.
Die Timer laufen grundsätzlich solange, bis sie gestoppt werden.

Code:
Stopp-Bedingungen
Timer 1: shape1.left = 150
Timer 2: shape1.left = 0
Untersuchen wir mal Timer1.
Annahme Shape.Left ist zu Beginn "0". Somit müsste der Timer1 genau 5x ausgeführt werden und danach stoppen.
In diesem Zusammenhang wäre es besser für die Abbruchbedingung ">= 150" einzusetzen.
Aber wie wird der Timer1 wieder gestartet? (gilt auch für Timer2)

Timer2:
Die Zeile
Delphi-Quellcode:
if timer1.enabled
  then begin
macht irgendwie keinen Sinn... ebenso timer2.interval := 100;
Delphi-Quellcode:
procedure tform1.timer1timer(sender: Tobject);
begin
  if shape1.left >= 0
  then begin
    timer1.interval := 100;
    shape1.left := shape1.left + 30;

    if shape1.left = 150
    then begin
      timer1.enabled := false;
      timer2.enabled := true;
    end;

  end;
end;

procedure tform1.timer2timer(sender: Tobject);
begin
  if timer1.enabled
  then begin
    timer2.interval := 100;
    shape1.left := shape1.left - 30;

    if shape1.left <= 0
    then begin
      timer1.enabled := true;
      timer2.enabled := false;
    end;

  end;
end;

end.
Roland

Geändert von blawen (14. Jul 2016 um 02:12 Uhr)
  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
 
#7

AW: Weiterlernen

  Alt 14. Jul 2016, 02:04
Nimm einfach einen Timer, lass den einfach immer durchlaufen und ändere die Schrittweite ab.
Delphi-Quellcode:
TForm1 = class( TForm )
...
private
  FShapeIncrement: Integer;
public
  procedure AfterConstruction; override;
end;

procedure TForm1.AfterConstruction;
begin
  inherited;
  // Startwert festlegen
  FShapeIncrement := 30;
end;

procedure TForm1.Timer1OnTimer( Sender: TObject );
var
  newLeft: Integer;
  maxLeft: Integer;
begin
  newLeft := Shape1.Left + FShapeIncrement;
  maxLeft := Shape1.Parent.ClientWidth - Shape1.Width;

  if newLeft <= 0
  then
    begin
      newLeft := 0;
      FShapeIncrement := - FShapeIncrement;
    end
  else if newLeft >= maxLeft
  then
    begin
      newLeft := maxLeft;
      FShapeIncrement := - FShapeIncrement;
    end;

  Shape1.Left := newLeft;
end;
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)

Geändert von Sir Rufo (14. Jul 2016 um 02:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen

Registriert seit: 1. Dez 2003
Ort: Luterbach (CH)
693 Beiträge
 
Delphi 12 Athens
 
#8

AW: Weiterlernen

  Alt 14. Jul 2016, 02:07
Folgender Code funktioniert: (Bedingung Shape1.Left ist zu Beginn = 0)
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if shape1.left < 150 then shape1.left := shape1.left + 30;

  if shape1.left >= 150
  then begin
    timer2.enabled := true;
    timer1.enabled := false;
  end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
  if shape1.left > 0 then shape1.left := shape1.left - 30;

  if shape1.left <= 0
  then begin
    timer1.enabled := true;
    timer2.enabled := false;
  end;
end;
Aber ich gebe Sir Rufo Recht, ein Timer ist besser
Roland
  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 06:19 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 by Thomas Breitkreuz