AGB  ·  Datenschutz  ·  Impressum  







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

Warteschlange realisieren

Ein Thema von hotkey · begonnen am 13. Mai 2012 · letzter Beitrag vom 14. Mai 2012
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#1

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 10:34
Wo steht der erste denn nun? Wenn an Position 1, wozu dann die Schleife?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#2

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 10:37
// kann gelöscht werden.
Felix

Geändert von hotkey (14. Mai 2012 um 10:42 Uhr)
  Mit Zitat antworten Zitat
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#3

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 10:42
Delphi-Quellcode:
constructor tschlange.create;
 begin
  next :=1;
  max := 10;
 end;

function tschlange.einfuegen(x:person):boolean;
  var i:integer;
    begin
      schlange[next].Name := form1.edit1.text;

    for i:=1 to 9 do
     schlange[next] := schlange[next+1];
     end;
Hallo,

also wenn ich jetzt diesen Befehl hier betrachte schlange[next].Name := form1.edit1.text; Dann heißt es ja für mich , dass im ersten Feld des Arrays , jetzt das steht , was ich ins Edit-Feld eingebenen habe , zum Beispiel Otto.

Dann ist das erste Feld im Array also [1] besetzt mit dem String von Otto , so , und jetzt will ich aber , dass Otto VORRÜCKT nämlich auf Feld Nummer 10 , also auf das letzte Feld im Array , also auf [10] , also bei schlange[10] soll Otto stehen bzw. sein , das wollte ich eigentlich mit der for-Schleife hinkriegen , aber anscheiennd ist da ein logischer Fehler , für den ich leider keien Ansätze mehr habe.
Felix
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#4

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 10:45
Erklär mir das mal: einfügen an Stelle 1 und dann verschieben nach Stelle 10? Wieso nicht gleich an Stelle 10 einfügen? Ich kann Deiner Logik nicht folgen, sry.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#5

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 10:49
Haha , daran habe ich garnicht gedacht irgendwie xD.

Hab viel zu kompliziert gedacht , also so sieht es dann jetzt , nach deinem Tipp , danke nochmals , aus :

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  person = record
    Name:string;
    id:integer;
  end;


  Tschlange = class
  private
    next,max:integer;
    schlange : array [1..10] of person;
  public
    function einfuegen(x:person):boolean;
    constructor create;
  end;


var
  Form1: TForm1;

implementation


constructor tschlange.create;
 begin
  next :=1;
  max := 10;
 end;

function tschlange.einfuegen(x:person):boolean;
  var i:integer;
    begin
      schlange[10].Name := form1.edit1.text;
      schlange[9].Name:= form1.edit2.text;
      schlange[8].name:=form1.edit3.text;

   // for i:=1 to 9 do
     //schlange[next] := schlange[next+1];


     end;

{$R *.dfm}


begin


end.
Und jetzt möchte ich , dass mit einer Showmessage-Prozedur mir angezeigt wird , wer zm Beispiel als 3. an der Kasse steht.
Geht das so hier :

[delphi procedure anzeigen;
begin
showmessage(high(schlange[8]))
[/dephi]
Felix
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#6

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 10:55
So brauchst Du Next aber auch nicht mehr. Irgendwie ergibt das alles keinen rechten Sinn in meinen Augen. Denken wir doch einmal logisch und sagen: der erste wird an Position 1 im Array geschrieben, der zweite an Position 2 usw. Dann sähe Einfügen ja so aus:
Delphi-Quellcode:
function tschlange.einfuegen(x: person): boolean;
begin
  //hinter dem Array kann man nichts mehr einfügen
  Result := Next <= max;
  if Result then
    begin
      //Daten an aktuelle Array-Position schreiben
      schlange[Next].Name := x.Name;
      schlange[Next].Id := x.Id;
      //Position erhöhen
      inc(Next);
    end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hotkey

Registriert seit: 20. Aug 2011
Ort: Berlin
113 Beiträge
 
Delphi 6 Personal
 
#7

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 11:01
Ja , danke für den großen Denkanstoß.

Irgendwie habe ich es bisschen durcheiander gebracht , sorry.


Aber jetzt ist es doch keine Warteschlange mehr , oder ?

Denn im ersten Array-Feld befindet sich ja eine Person , und später dann auch im zweiten Array-Feld.

Dann ist das zweite Array-Feld ja aber vor dem ersten Array-Feld , ist ja sowas wie Drängeln , oder nicht ?
Felix
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#8

AW: Warteschlange realisieren

  Alt 14. Mai 2012, 11:04
Wie kann das 2. vor dem 1. sein?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 11:50 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