AGB  ·  Datenschutz  ·  Impressum  







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

Löschen doppelter Zahlen

Ein Thema von n00b_on_knees · begonnen am 21. Aug 2003 · letzter Beitrag vom 27. Aug 2003
 
Benutzerbild von n00b_on_knees
n00b_on_knees

Registriert seit: 5. Apr 2003
128 Beiträge
 
#1

Löschen doppelter Zahlen

  Alt 21. Aug 2003, 11:03
Hi Leute!

Ich habe gestern ein Programm geschrieben, das aus einem Memofeld doppelte Zahlen herauslöschen soll, die restlichen sollen aufgerückt werden. Hierbei habe ich ein Problem nachdem ich auf den Start Button drücke, dann kommt eine Benachrichtigung über Debugger Exception, so eine Art Zugriffsverletzung aus irgendeinem Grund, nur ich weiß nicht aus welchem . Kommt sowohl beim Start über F9, als auch der exe. Datei. Ich geb euch hierzu mal den Quellcode, vielleicht stimmt daran etwas nicht, wobei es schonmal so ähnlich funktioniert hat?

Delphi-Quellcode:
unit fDoppelLoesch;

interface

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

type
  TForm1 = class(TForm)
    mmEin: TMemo;
    mmAus: TMemo;
    btStart: TButton;
    procedure btStartClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btStartClick(Sender: TObject);
//Konstantendeklaration
const
  nMax = 30;

//Variablendeklaration
var
  i, j, k, N: integer;
  A: array [1..nMax] of integer;

begin
   //Einlesen von N
   N:= mmEin.Lines.Count;
   //Einlesen der Zahlen
   for i:= 0 to N-1 do
     //Speichern der Zahlen im Feld
     A[i]:= StrToInt(mmEin.Lines[i]);
   //i auf 0 zuweisen
   i:= 0;
   //Wiederhole bis
   repeat
     //j ist zugewiesen i+1
     j:=i+1;
       //Wiederhole bis
       repeat
         //Wenn A[i] und A[i+1] oder j>=N, dann
         if ((A[i]=A[j]) or (j>= N)) then
           begin
             //Von i+1 zu N+1
             for k:= j to N+1 do
               begin
               //Speichere bei i+1, den Wert von i+1+1
               A[j]:= A[j+1];
               //Vermindere N um 1
               dec(N);
               end;
           end
         //sonst
         else
           //Erhöhe j um 1
           inc(j);
       //j größer N-1
       until j > N-1;
     //Erhöhe i um 1
     inc(i);
   //i größer N-1
   until i > N-1;
   //Ausgeben der restlichen Zahlen
   for i:= 0 to N-1 do
     mmAus.Lines.Add(IntToStr(A[i]));
end;
end.
Against TCPA & And I think we should live our dreams
  Mit Zitat antworten Zitat
 


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:00 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