AGB  ·  Datenschutz  ·  Impressum  







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

Zugriffsverletzung in Procedure

Ein Thema von Meflin · begonnen am 4. Sep 2003 · letzter Beitrag vom 4. Sep 2003
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#1

Zugriffsverletzung in Procedure

  Alt 4. Sep 2003, 09:16
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
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*
Leo S.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#2

Re: Zugriffsverletzung in Procedure

  Alt 4. Sep 2003, 09:19
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#3

Re: Zugriffsverletzung in Procedure

  Alt 4. Sep 2003, 09:22
ne... hat nix genützt!
Leo S.
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#4

Re: Zugriffsverletzung in Procedure

  Alt 4. Sep 2003, 09:28
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.
dann find ich den Fehler auch besse
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Zugriffsverletzung in Procedure

  Alt 4. Sep 2003, 09:29
ich würde das memo auch vorher erstellen

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

mfG
mirage228
David F.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#6

Re: Zugriffsverletzung in Procedure

  Alt 4. Sep 2003, 09:33
@ mirage hab ich jetzt gemacht, jetzt krieg ich nen fehler
Element " hat kein übvergeordnetes Fenster ...
Leo S.
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#7

Re: Zugriffsverletzung in Procedure

  Alt 4. Sep 2003, 09:36
Jetzt seh ich's

Du brauchst kein Memo erstellen sondern es reicht wenn du ein TStringList-Object erstellst...
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#8

Re: Zugriffsverletzung in Procedure

  Alt 4. Sep 2003, 09:39
jetzt krieg ich nen fehler
Listenindex überschreitet das maximum!
Leo S.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Zugriffsverletzung in Procedure

  Alt 4. Sep 2003, 09:40
dann würde ich anstatt
Buffer := TMemo.Create(nil); schreiben:
Buffer := TMemo.Create(Application.MainForm); und dann "Buffer.Name := 'Buffer'";

mfG
mirage228
David F.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#10

Re: Zugriffsverletzung in Procedure

  Alt 4. Sep 2003, 09:44
Element Buffer hat kein übergeordnetes Fenster ...
Leo S.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 20:45 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