AGB  ·  Datenschutz  ·  Impressum  







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

EAccessViolation bei Bubblesort

Ein Thema von Dyvil · begonnen am 6. Okt 2007 · letzter Beitrag vom 9. Okt 2007
Antwort Antwort
Seite 2 von 3     12 3      
Dyvil

Registriert seit: 6. Okt 2007
14 Beiträge
 
#11

Re: EAccessViolation bei Bubblesort

  Alt 9. Okt 2007, 11:03
nee das funktioniert auch nicht, immernoch der gleiche fehler...
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: EAccessViolation bei Bubblesort

  Alt 9. Okt 2007, 11:15
Hilft eventuell das hier weiter?

EDIT:

Da ich oben sehe, das ein Speicherfehler vorliegt, du benutzt doch eine Liste, wurde diese auch richtig instanziert?

Eventuell hilft es dir, wenn du mal unter Optionen -> Compiler -> Optimierung uncheckst und dann mit F4 und F7 deinen Code einzeln durchguckst. Wenn du dann mit der Maus drüber gehst, kannst du dir die Werte der Variablen zur Laufzeit anzeigen lassen )

EDIT2:

Gerade mal deinen Quelltext angeschaut. Also du hast ja ein var List: TStringList; Du solltest hier, bevor du auf diese Liste irgendwie verweist und Werte schreiben willst, diese auch mal instanzieren. BVis jetzt weiß Delphi nämlich noch nicht, wo diese im Speicher sich befindet.

Füge mal ein List:= TStringList.Create; hinzu
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Dyvil

Registriert seit: 6. Okt 2007
14 Beiträge
 
#13

Re: EAccessViolation bei Bubblesort

  Alt 9. Okt 2007, 11:36
Delphi-Quellcode:
procedure BubbleSort(var List: Blg);
var
  done: boolean;
  i, n: integer;
  Dummy: string;
begin
  List:= TStringList.Create;
dann kommt ein fehler, dass "blg" und "TStringlist" inkompatible Typen sind

Edit: ich habe das "list:= TStringList.Create" mal als formcreate prozedur geschrieben, aber dann kommt der ursprüngliche Fehler immernoch!
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: EAccessViolation bei Bubblesort

  Alt 9. Okt 2007, 11:45
Tut mir leid, war mein Fehler. Das kannst du wieder wegmachen ;o)

Ich schätze mal deine Bereichsverletzung kommt aus der Zeile.
for i := Low(List) to High(List) - 1 do Mache hier draus mal for i := Low(List) to High(List) - 2 do Wenn du dir das hier mal anschaust
Delphi-Quellcode:
procedure BubbleSort(Items: TStrings);
var
  done: boolean;
  i, n: integer;
  Dummy: string;
begin
  n := Items.Count;

  repeat
    done := true;
    for i := 0 to n - 2 do
      if Items[i] > Items[i + 1] then
      begin
        Dummy := Items[i];
        Items[i] := Items[i + 1];
        Items[i + 1] := Dummy;

        done := false;
      end;
  until done;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  BubbleSort(Listbox1.Items);
end;
http://www.dsdt.info/tipps/?id=368
Hab ich in #12 schon gepostet
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Dyvil

Registriert seit: 6. Okt 2007
14 Beiträge
 
#15

Re: EAccessViolation bei Bubblesort

  Alt 9. Okt 2007, 11:53
das hier funktioniert so nicht, weil er dann nur 4 statt 5 Werte sortiert und den 5. Wert einfach an den Schluss hängt. Die Sortierung wird dann also falsch:
for i := Low(List) to High(List) - 2 do Den Link zum Bubblesort habe ich mir schon angeguckt, jedoch habe ich ein record und kein einfaches array....
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: EAccessViolation bei Bubblesort

  Alt 9. Okt 2007, 12:03
Hast du mal geschaut, an welcher Stelle er den Fehler bringt?
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Dyvil

Registriert seit: 6. Okt 2007
14 Beiträge
 
#17

Re: EAccessViolation bei Bubblesort

  Alt 9. Okt 2007, 12:08
der Fehler müsste schon relativ früh auftauchen glaube ich. Wenn ich Bubblesort einfach rauskommentiere, steht im string nicht das, was da stehen soll (also das Editfeld). Also müsste theoretisch beim Einlesen des stringwertes ein Fehler sein, aber andererseits klappt das "StrToInt" bei den Noten wunderbar, somit weiß der Rechner ja eigentlich, welches Editfeld gemeint ist... Eigentlich...
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: EAccessViolation bei Bubblesort

  Alt 9. Okt 2007, 12:26
Delphi-Quellcode:
procedure TAbiturrechner.Button1Click(Sender: TObject);
var noten : Blg;
    i : integer;

begin
for i := 1 to 5 do begin
noten[i].Notenpunkte := strtoint(Edit1.Text);
noten[i].Editfeld := Edit1.Text;
end;
Bubblesort(noten);
end
Das ist ja eigentlich keine wirkliche Änderung :\

EDIT: Wieso eigentlich 5 mal das gleiche aus Edit1.Text auslesen?
Und warum genau 5 mal, wenn doch Blg ein Array[1..10] ist ?
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Dyvil

Registriert seit: 6. Okt 2007
14 Beiträge
 
#19

Re: EAccessViolation bei Bubblesort

  Alt 9. Okt 2007, 12:36
da wird nichts 5 mal aus Edit1.Text ausgelesen, das musst du falsch verstanden haben. Schaue dir doch nochmal meinem Post #9 an, da steht:
s := TEdit(FindComponent('Edit' + inttostr(i))).Text;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: EAccessViolation bei Bubblesort

  Alt 9. Okt 2007, 12:42
Da steht dann aber nicht "Edit1.Text" drin, sondern der Inhalt von Edit1
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
Seite 2 von 3     12 3      


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 02:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz