AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

String ersetzen/ Zugriffsverletzung

Ein Thema von DevilDriver · begonnen am 25. Jun 2012 · letzter Beitrag vom 25. Jun 2012
Antwort Antwort
Seite 1 von 2  1 2   
DevilDriver

Registriert seit: 25. Jun 2012
6 Beiträge
 
#1

String ersetzen/ Zugriffsverletzung

  Alt 25. Jun 2012, 10:58
Morgen liebe Community,
tut mir leid falls ich eine ungeschickte Anfängerfrage stelle,
allerdings habe ich neulich angefangen in Delphi zu programmieren und wolle mit einem
kleinen Programm starten, in diesem Fall: Hangman.
Dabei habe ich in einem Edit-Feld die Länge des gesuchten Wortes in _ Zeichen
Ein Buchstabe wird eingegeben und das Zeichen soll durch den Buchstaben ersetzt werden.
Das Kompilieren ist kein Problem, doch wenn ich auf den Button klicke der die Funktion ausführen soll
bekomme ich folgende Fehlermeldung:
"Zugriffsverletzung bei Adresse 005115DE in Modul 'ProjectHangman.exe'. Schreiben von Adresse 00000000."

Die Variablen habe ich folgender Maßen deklariert:
Delphi-Quellcode:
var buchstabenLaenge : integer;
var buchstabe : string;
var I : integer;
var count : integer;
var lösung : string
WortLaenge ist eine globale Variable

Der Fehler findet in dieser Schleife statt:

Delphi-Quellcode:
  for I := 1 to wortLaenge do
  begin
  if eingabe1[count]=buchstabe[1] then
  begin
     lösung[count]:=buchstabe[1];
  end;
  count := count +1;
  end;
Konnte mit Google den Fehler nicht finden^^
Wenn ich den Debugger benutze, werde ich an folgende Stelle gebracht

Delphi-Quellcode:
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Thread-Start: Thread-ID: 1728. Prozess ProjectHangman.exe (1284)

Kann damit nichts anfangen

Wärt ihr so nett mich aufzuklären?^^
  Mit Zitat antworten Zitat
Klaus01

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

AW: String ersetzen/ Zugriffsverletzung

  Alt 25. Jun 2012, 11:01
Delphi-Quellcode:
  for I := 1 to wortLaenge do
  begin
  if eingabe1[count]=buchstabe[1] then
  begin
     lösung[count]:=buchstabe[1];
  end;
  count := count +1;
  end;
Deine Schleifevariable heißt I
Du nutzt aber das nicht initialisiert count um auf einzelne Zeichen Deines Strings
zuzugreifen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
DevilDriver

Registriert seit: 25. Jun 2012
6 Beiträge
 
#3

AW: String ersetzen/ Zugriffsverletzung

  Alt 25. Jun 2012, 11:17
meinst du ich sollte count durch I ersetzen?
in dem fall bekomme ich allerdings die gleiche fehlermeldung
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: String ersetzen/ Zugriffsverletzung

  Alt 25. Jun 2012, 11:22
Zeig doch mal die ganze Methode. Ist Buchstabe initialisiert, und wieso ist das ein String, würde Char nicht genügen?
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
Klaus01

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

AW: String ersetzen/ Zugriffsverletzung

  Alt 25. Jun 2012, 11:22
Delphi-Quellcode:
  
for i := 1 to length(eingabe1) do
  begin
    if eingabe1[i]=buchstabe[1] then
      begin
        lösung[i]:=buchstabe[1];
      end;
  end;
Welche Delphi-Version nutzt Du >= 2009 dann hat Dein String pro Buchstaben zwei 2Byte.
Dann könntest Du auf AnsiString ausweichen.

Eingabe1 ist ein String - oder ist es eine Edit-Componente?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.197 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: String ersetzen/ Zugriffsverletzung

  Alt 25. Jun 2012, 11:23
Hast du Count initialisiert?
Setz mal vor der Schleife Count auf 1!
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: String ersetzen/ Zugriffsverletzung

  Alt 25. Jun 2012, 11:26
Welche Delphi-Version nutzt Du >= 2009 dann hat Dein String pro Buchstaben zwei 2Byte.
Dann könntest Du auf AnsiString ausweichen.
Er greift doch nicht byteweise auf den String zu, daher dürfte Unicode hier nicht das Problem sein.
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
Klaus01

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

AW: String ersetzen/ Zugriffsverletzung

  Alt 25. Jun 2012, 11:26
was noch fehlt ist die Länge von Lösung zu setzen.

setLength(Lösung,length(Eingabe1)); @DeddyH: Ja, da hast Du Recht.

Grüße
Klaus
Klaus

Geändert von Klaus01 (25. Jun 2012 um 11:28 Uhr)
  Mit Zitat antworten Zitat
DevilDriver

Registriert seit: 25. Jun 2012
6 Beiträge
 
#9

AW: String ersetzen/ Zugriffsverletzung

  Alt 25. Jun 2012, 12:00
anscheinend hab ich noch viel zu lernen

setLength(Lösung,length(Eingabe1));

wo soll ich das einsetzen? in der schleife?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: String ersetzen/ Zugriffsverletzung

  Alt 25. Jun 2012, 12:03
Wie ich schon sagte:
Zeig doch mal die ganze Methode.
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 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf