AGB  ·  Datenschutz  ·  Impressum  







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

"Ungültige Zeigeroperation"

Ein Thema von BillieJoe90 · begonnen am 7. Feb 2007 · letzter Beitrag vom 8. Feb 2007
Antwort Antwort
Benutzerbild von BillieJoe90
BillieJoe90

Registriert seit: 29. Sep 2006
Ort: Bovenden
122 Beiträge
 
#1

"Ungültige Zeigeroperation"

  Alt 7. Feb 2007, 22:03
Hallo,
ich bekomme die Fehlermeldung "Ungültige Zeigeroperation" beim Aufruf der folgenden Funktion:

Delphi-Quellcode:
function TSort.sortStrings(strings:TStrArray;order:String):TStrArray;
var i, i2, i3: Integer;
var sortedArray:TStrArray;
var tempArray:TTwoDimIntArray;
var c, merke:String;
begin

  for i:=0 to length(strings)-1 do begin

    setLength(tempArray, length(tempArray)+1);

    i3 := 1;
    setLength(tempArray[i], 1);

    for i2:=1 to length(strings[i]) do begin
      c := strings[i][i2];
      if ((length(IntToStr(tempArray[i][i3]))) + (length(IntToStr(self.charToAlphabetInteger(c)))) > 9) then begin
        i3 := i3 + 1;
        setLength(tempArray[i], length(tempArray[i])+1);
      end;
      tempArray[i][i3] := self.charToAlphabetInteger(c);
    end;

  end;


  setLength(sortedArray, length(strings));

  for i:=0 to length(strings)-1 do begin
    for i2:=0 to i+1 do begin
      if ((tempArray[i+1][1] < tempArray[i2][1]) AND (order = 'ASC')) OR
         ((tempArray[i+1][1] > tempArray[i2][1]) AND (order = 'DESC')) then begin
        merke := strings[i2];
        strings[i2] := strings[i+1];
        strings[i+1] := merke;
      end;
    end;
  end;

  for i:=0 to length(strings)-1 do begin
    sortedArray[i] := strings[i];
  end;

  Result := sortedArray;
end;
Der Fehler kann nicht in der Funktion "self.charToAlphabetInteger()" liegen, das habe ich geprüft!

Kann mir jemand helfen? Ich habe nämlich meines Erachtens nach alle Array-Längen richtig gesetzt usw.

Danke schonmal!

Johannes
Johannes
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: "Ungültige Zeigeroperation"

  Alt 7. Feb 2007, 22:03
Setz mal Breakpoints und grenze das genauer ein. Der Evaluator kann da auch helfen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#3

Re: "Ungültige Zeigeroperation"

  Alt 7. Feb 2007, 22:27
Hallo Johannes,

ein Versuch: tempArray besitzt die Länge von strings, in den Zeilen 32 und 33 greifst du wahrscheinlich auf Elemente außerhalb beider Arrays zu. Ich habe den Quelltext nicht vollständig geprüft, aber vielleicht genügt es, in der Schleife ab Zeile 30 auf den letzten Durchlauf zu verzichten.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: "Ungültige Zeigeroperation"

  Alt 7. Feb 2007, 22:28
Übrigens lässt sich sowas viel leichter mit aktivierten Rangechecks ({$R+}) finden.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: "Ungültige Zeigeroperation"

  Alt 8. Feb 2007, 06:29
Guten Morgen Johannes,

weil du nicht beschreibst, wozu dein Code benötigt wird, fehlt mir zum Verständnis die Methode CharToAlphabetInteger(). Kannst du auch davon den Quelltext veröffentlichen?

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von BillieJoe90
BillieJoe90

Registriert seit: 29. Sep 2006
Ort: Bovenden
122 Beiträge
 
#6

Re: "Ungültige Zeigeroperation"

  Alt 8. Feb 2007, 12:40
Zitat von marabu:
Guten Morgen Johannes,

weil du nicht beschreibst, wozu dein Code benötigt wird, fehlt mir zum Verständnis die Methode CharToAlphabetInteger(). Kannst du auch davon den Quelltext veröffentlichen?

Grüße vom marabu
Danke, aber ich habe das Problem jetzt gelöst, doch kann ich leider nicht sagen, wie?!
Johannes
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#7

Re: "Ungültige Zeigeroperation"

  Alt 8. Feb 2007, 12:46
Zitat von BillieJoe90:
Danke, aber ich habe das Problem jetzt gelöst, doch kann ich leider nicht sagen, wie?!
Das ist schlecht. Denn dann weißt du auch nicht, ob der Fehler tatsächlich weg ist, oder auf anderen PCs auf einmal wieder auftritt.
  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 15:52 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