Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zugriffsverletzung in Procedure (https://www.delphipraxis.net/8410-zugriffsverletzung-procedure.html)

Meflin 4. Sep 2003 09:16


Zugriffsverletzung in Procedure
 
also ich hab mir mal ne procedure gebastelt, die ein memo mit zufälligen zeichen füllen soll. keine sorge, 100 zeilen dieses codes sind eine case of anweisung! aber die zeile
Delphi-Quellcode:
Buffer.Lines[i] := zeile
verursacht eine zugriffsverletzung. hier nun das ganze script:
Delphi-Quellcode:
procedure create_mem(Memo: TMemo);
var i, zeilen, zeilenlen, x, zeichenr: integer;
zeichen, zeile : string;
Buffer: TMemo;
begin
  randomize;
  zeilen := random(80);
  for i := 1 to zeilen do begin
    zeilenlen := random(50);
    for x := 0 to zeilenlen do begin
      zeichenr := random(98);
      case zeichenr of
        0: zeichen := ' ';
        1: zeichen := ' ';
        2: zeichen := 'a';
        3: zeichen := 'b';
        4: zeichen := 'c';
        5: zeichen := 'd';
        6: zeichen := 'e';
        7: zeichen := 'f';
        8: zeichen := 'g';
        9: zeichen := 'h';
        10:zeichen := 'i';
        11:zeichen := 'j';
        12:zeichen := 'k';
        13:zeichen := 'l';
        14:zeichen := 'm';
        15:zeichen := 'n';
        16:zeichen := 'o';
        17:zeichen := 'p';
        18:zeichen := 'q';
        19:zeichen := 'r';
        20:zeichen := 's';
        21:zeichen := 't';
        22:zeichen := 'u';
        23:zeichen := 'v';
        24:zeichen := 'w';
        25:zeichen := 'x';
        26:zeichen := 'y';
        27:zeichen := 'z';
        28:zeichen := '1';
        29:zeichen := '2';
        30:zeichen := '3';
        31:zeichen := '4';
        32:zeichen := '5';
        33:zeichen := '6';
        34:zeichen := '7';
        35:zeichen := '8';
        36:zeichen := '9';
        37:zeichen := '0';
        38:zeichen := '+';
        39:zeichen := '*';
        40:zeichen := '#';
        41:zeichen := '~';
        42:zeichen := '''';
        43:zeichen := '-';
        44:zeichen := '.';
        45:zeichen := ':';
        46:zeichen := ';';
        47:zeichen := ':';
        48:zeichen := '_';
        49:zeichen := '!';
        50:zeichen := '"';
        51:zeichen := '§';
        52:zeichen := '$';
        53:zeichen := '%';
        54:zeichen := '&';
        55:zeichen := '/';
        56:zeichen := '(';
        57:zeichen := ')';
        58:zeichen := '=';
        59:zeichen := '?';
        60:zeichen := '@';
        61:zeichen := '€';
        62:zeichen := '²';
        63:zeichen := '³';
        64:zeichen := '[';
        65:zeichen := ']';
        66:zeichen := '{';
        67:zeichen := '}';
        68:zeichen := 'ß';
        69:zeichen := '\';
        70:zeichen := '<';
        71:zeichen := '>';
        72:zeichen := '|';
        73:zeichen := 'A';
        74:zeichen := 'B';
        75:zeichen := 'C';
        76:zeichen := 'D';
        77:zeichen := 'E';
        78:zeichen := 'F';
        79:zeichen := 'G';
        80:zeichen := 'H';
        81:zeichen := 'I';
        82:zeichen := 'J';
        83:zeichen := 'K';
        84:zeichen := 'L';
        85:zeichen := 'M';
        86:zeichen := 'N';
        87:zeichen := 'O';
        88:zeichen := 'P';
        89:zeichen := 'Q';
        90:zeichen := 'R';
        91:zeichen := 'S';
        92:zeichen := 'T';
        93:zeichen := 'U';
        94:zeichen := 'V';
        95:zeichen := 'W';
        96:zeichen := 'X';
        97:zeichen := 'Y';
        98:zeichen := 'Z';
      end;
      zeile := zeile + zeichen;
    end;
    Buffer.Lines[i] := zeile;
  end;
  Memo.Text := Buffer.Text;
end;
wieso funzt das nich?

*MFG & THX*

Phoenix 4. Sep 2003 09:19

Re: Zugriffsverletzung in Procedure
 
Nimm anstelle Buffer.Lines[i] := zeile am besten ein Buffer.Lines.Add(zeile);

Und initialisier zeile am Anfang am besten noch mit einem leeren String.

Meflin 4. Sep 2003 09:22

Re: Zugriffsverletzung in Procedure
 
ne... hat nix genützt!

neolithos 4. Sep 2003 09:28

Re: Zugriffsverletzung in Procedure
 
Die Zugriffs Verletzung entsteht da es an der i-ten Position noch keine Zeile gibt.

Und BITTE überdenke dein case n of

0..26: zeichen := char(zeichenr)

Und BITTE nutze ungarische notationen

var i,
iZeilen,
iZeilenLen,
x,
iZeichen : integer;
sZeichen,
sZeile : string;

kann man wesentlich besser lesen.
:wink: dann find ich den Fehler auch besse :wink:

mirage228 4. Sep 2003 09:29

Re: Zugriffsverletzung in Procedure
 
ich würde das memo auch vorher erstellen

Delphi-Quellcode:
Buffer := TMemo.Create(nil);
so solltes gehn

mfG
mirage228

Meflin 4. Sep 2003 09:33

Re: Zugriffsverletzung in Procedure
 
@ mirage hab ich jetzt gemacht, jetzt krieg ich nen fehler
Delphi-Quellcode:
Element " hat kein übvergeordnetes Fenster
...
:coder:

neolithos 4. Sep 2003 09:36

Re: Zugriffsverletzung in Procedure
 
Jetzt seh ich's

Du brauchst kein Memo erstellen sondern es reicht wenn du ein TStringList-Object erstellst...

Meflin 4. Sep 2003 09:39

Re: Zugriffsverletzung in Procedure
 
jetzt krieg ich nen fehler
Delphi-Quellcode:
Listenindex überschreitet das maximum!

mirage228 4. Sep 2003 09:40

Re: Zugriffsverletzung in Procedure
 
dann würde ich anstatt
Delphi-Quellcode:
Buffer := TMemo.Create(nil);
schreiben:
Delphi-Quellcode:
Buffer := TMemo.Create(Application.MainForm);
und dann "Buffer.Name := 'Buffer'";

mfG
mirage228

Meflin 4. Sep 2003 09:44

Re: Zugriffsverletzung in Procedure
 
Delphi-Quellcode:
Element Buffer hat kein übergeordnetes Fenster
...
:freak:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 Uhr.
Seite 1 von 3  1 23      

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