AGB  ·  Datenschutz  ·  Impressum  







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

Zugriffsverletzung?

Offene Frage von "Sir Rufo"
Ein Thema von Wulli12 · begonnen am 26. Dez 2013 · letzter Beitrag vom 26. Dez 2013
 
Wulli12

Registriert seit: 25. Dez 2013
4 Beiträge
 
#1

Zugriffsverletzung?

  Alt 26. Dez 2013, 00:11
Ich habe in meinem Programm eine function, welche mir einen gegebenen string sortieren soll.

z.B. : '7,3,11,5,1' --> '1,3,5,7,11'

Dazu gebe ich meiner function einen string in solch einer Form, also durch Kommas abgetrennte Zahlen. Daraufhin soll es die einzelnen Zahlen separieren und in einem Array aufteilen. Daraufhin durch meinen Such-Algorithmus die einzelnen Glieder jeweils vergleichen und in ein anderes Array in geordneter Reihenfolge kopieren. Und als Ausgabe diese einfach wieder durch Kommas getrennt als einzelnen string ausgeben.

Ich denke vom Verfahren her ist mein Code in Ordnung, jedoch bekomme ich immer den folgenden Error:

Zugriffsverletzung bei Adresse 00403EBC in Modul 'psort.exe'. Lesen von Adresse 00000004.

Hier noch einmal mein Delphi-Code:

Delphi-Quellcode:
unit msort;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Edit1Change(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

function sortString(input: string): string;
  var i, j, x: integer;
      output, rest: string;
      unsorted, sorted: array of string;
begin

  rest:= input;
  i:= 1;

  repeat

  if pos(',', rest) <> 0 then
  begin

    unsorted[i]:= copy(rest, i, pos(',', rest) - 1);
    rest:= copy(rest, pos(',', rest) + 1, length(rest));
    i:= i + 1;

  end;

  if pos(',', rest) = 0 then
  begin

    unsorted[i]:= copy(rest, 1, length(rest));
    rest:= '';

  end;

  until rest = '';

  for i:= 1 to length(unsorted) do
  begin

  x:= i;

  for j:= 1 to length(unsorted) do
  begin

      if (j <> i) and (unsorted[j] <> '') then
      begin

        if strtofloat(unsorted[x]) < strtofloat(unsorted[j]) then
        begin

          x:= j;

        end;

      end;

    end;

    sorted[i]:= unsorted[x];

  end;

  output:= sorted[1];

  for i:= 2 to length(sorted) do
  begin

  output:= output + ',' + sorted[i];

  end;

  result:= output;

end;

{$R *.dfm}

procedure TForm1.Edit1Change(Sender: TObject);
begin

  Edit2.Text:= sortString(Edit1.Text);

end;

end.
Ich hoffe mir kann jemand sagen, worin genau mein Fehler liegt, denn ich habe keine Ahnung was ich falsch gemacht haben könnte. Und schon einmal Danke im vorraus.
  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 22:21 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