AGB  ·  Datenschutz  ·  Impressum  







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

EAccessViolation - warum?

Offene Frage von "fapsons"
Ein Thema von fapsons · begonnen am 6. Mär 2007 · letzter Beitrag vom 6. Mär 2007
Antwort Antwort
fapsons

Registriert seit: 29. Jan 2007
Ort: Berlin
65 Beiträge
 
#1

EAccessViolation - warum?

  Alt 6. Mär 2007, 14:49
Hey Leute,

muss heute das Forum leider häufiger beanspruchen, weil ich heute irgendwie mal den Durchblick verloren haben.
Kann mir jemand sagen, warum an der gekennzeichten Stelle es zu einer EAccessViolation kommt?
Warum kann ich denn nicht auf den String schreiben?

Gruß
-fapsons-

Delphi-Quellcode:
function Separate_Prims_From_nWebZE(value: String): T2KeyParts;
var i :Integer;
    str_Prims, str_nWebZE: String;
begin
 for i := 1 to (length(value)- 3) do
 begin
    str_Prims[i] := value[i]; // <--- EAccessViolation
 end;

 for i := (length(value)- 3) to (length(value)) do
 begin
    str_nWebZE[i] := value[i];
 end;

 result[1] := strtoint(str_Prims);
 result[2] := strtoint(str_nWebZE);
end;
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#2

Re: EAccessViolation - warum?

  Alt 6. Mär 2007, 14:54
Hallo

    str_Prims[i] := value[i]; str_Prims is noch leer. Somit schreibst du über das Ende des Strings hinaus...

    str_Prims := str_Prims + value[i]; mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: EAccessViolation - warum?

  Alt 6. Mär 2007, 14:54
Hallo,
Zitat von fapsons:
Kann mir jemand sagen, warum an der gekennzeichten Stelle es zu einer EAccessViolation kommt?
Warum kann ich denn nicht auf den String schreiben?
Weil der String nicht initialisiert und damit nil ist. Du könntest vorher den String auf die gewünschte Länge setzen:
Delphi-Quellcode:
function Separate_Prims_From_nWebZE(value: String): T2KeyParts;
var i :Integer;
    str_Prims, str_nWebZE: String;
begin
  SetLength(str_Prins, length(Value) - 3);
  for i := 1 to (length(value)- 3) do
 begin
    str_Prims[i] := value[i];
 end;
 ...
Noch besser ist es allerdings, den String direkt zuzuweisen:
Delphi-Quellcode:
function Separate_Prims_From_nWebZE(value: String): T2KeyParts;
var i :Integer;
    str_Prims, str_nWebZE: String;
begin
  str_Prims := Copy(Value, 1, Length(Value) - 3);
 ...
Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: EAccessViolation - warum?

  Alt 6. Mär 2007, 14:56
Delphi-Quellcode:
function Separate_Prims_From_nWebZE(value: String): T2KeyParts;
var i :Integer;
    str_Prims, str_nWebZE: String;
begin
str_Prims:=''; // eingefügt

for i := 1 to (length(value)- 3) do
begin
    str_Prims := Str_Prims + value[i]; // <--- keine EAccessViolation
end;

for i := (length(value)- 3) to (length(value)) do
begin
    str_nWebZE[i] := value[i]; // hier solltest Du es auch ändern.
end;

result[1] := strtoint(str_Prims);
result[2] := strtoint(str_nWebZE);
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#5

Re: EAccessViolation - warum?

  Alt 6. Mär 2007, 14:58
Oh mann und ich denk nicht an Copy... Copy is natürlcih der beste Weg... Sollte den Code nächstes Mal genauer angucken.

Siehe auch: http://r2c2.weingut-rehn.de/content3...mit_Delphi.htm

mfg

Christian
Kaum macht man's richtig, schon klappts!
  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 18:22 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