Autor Beitrag
Andreas_Sans
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: Mi 06.08.03 20:00 
Wenn ich auf einen Button auf dem ersten Formblatt drücke, meint Delphi es hätte eine Ungültige Zeigeroperation stattgefunden.

Hier der Quellcode :

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
hin[1] := 'Aa';
hin[2] := 'Bb';
hin[3] := 'Cc';
hin[4] := 'Dd';
hin[5] := 'Ee';
hin[6] := 'Ff';
hin[7] := 'Gg';
hin[8] := 'Hh';
hin[9] := 'Ii';
hin[10] := 'Jj';
hin[11] := 'Kk';
hin[12] := 'Ll';
hin[13] := 'Mm';
hin[14] := 'Nn';
hin[15] := 'Oo';
hin[16] := 'Pp';
hin[17] := 'Qq';
hin[18] := 'Rr';
hin[19] := 'Ss';
hin[20] := 'Tt';
hin[21] := 'Uu';
hin[22] := 'Vv';
hin[23] := 'Ww';
hin[24] := 'Xx';
hin[25] := 'Yy';
hin[26] := 'Zz';
hin[27] := '1';
hin[28] := '2';
hin[29] := '3';
hin[30] := '4';
hin[31] := '5';
hin[32] := '6';
hin[33] := '7';
hin[34] := '8';
hin[35] := '9';
hin[36] := '0';

zurck[1] := 'Jj';
zurck[2] := 'Ff';
zurck[3] := 'Hh';
zurck[4] := 'Nn';
zurck[5] := 'Aa';
zurck[6] := 'Rr';
zurck[7] := 'Gg';
zurck[8] := 'Kk';
zurck[9] := 'Xx';
zurck[10] :='Pp';
zurck[11] :='Ee';
zurck[12] :='Yy';
zurck[13] :='Qq';
zurck[14] :='Uu';
zurck[15] :='Tt';
zurck[16] :='Dd';
zurck[17] :='Oo';
zurck[18] :='Ll';
zurck[19] :='Bb';
zurck[20] :='Ww';
zurck[21] :='Ss';
zurck[22] :='Ii';
zurck[23] :='Mm';
zurck[24] :='Zz';
zurck[25] :='Vv';
zurck[26] :='Cc';
zurck[27] :='5';
zurck[28] :='9';
zurck[29] :='2';
zurck[30] :='7';
zurck[31] :='6';
zurck[32] :='1';
zurck[33] :='4';
zurck[34] :='0';
zurck[35] :='3';
zurck[36] :='8';

decoder := '';
bester := '';
beste := '';
filename := 'C:\Eigene Dateien\anfang.doc';
LoadStringFromFile(filename,loadstring);
decoder := loadstring;
decodierung(decoder,hin,zurck,bester,beste);
// hier meint delphi es hätte ein ungültige zeigeroperation stattgefunden
form4.label4.caption := beste + ' Sekunde(n)'
form4.label6.caption := bester;

decoder := '';
bester := '';
beste := '';
filename := 'C:\Eigene Dateien\fortgeschritt.doc';
LoadStringFromFile(filename,loadstring);
decoder := loadstring;
decodierung(decoder,hin,zurck,bester,beste);
form4.label5.caption := beste + ' Sekunde(n)';
form4.label7.caption := bester;


ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
procedure LoadStringFromFile(Filename: stringvar LoadString: string);
var fs:TFileStream;
begin
fs:=TFileStream.Create(filename, fmOpenRead or fmShareDenyNone);
SetLength(LoadString, fs.Size);
if fs.size>0 then
fs.Read(LoadString[1], fs.Size);
fs.Free;
end;

procedure decodierung(decoder : string; hin : array of string; zurck : array of string
  var bester : stringvar beste : string);
var i,j,o       : integer;
    uber,uber2  : string;
    zahl : boolean;
begin
zahl := false;
i := length(decoder);
for j := 1 to i do begin

if zahl = false then begin

  for o := 0 to 36 do begin
  uber  := hin[o];
  uber2 := zurck[o];

  if decoder[j] = uber2[2then begin
      bester := bester + uber[2];
                               end;
  if decoder[j] = uber2[1then begin
      bester := bester + uber[1];
                               end
                     end;
  if decoder[j] = ' ' then begin
      bester := bester + ' ';
                           end;
  if decoder[j] = #13 then begin
      zahl := true;
                           end;
                     end;

if zahl = true then begin
 for o := 26 to 36 do begin
  if decoder[j] = zurck[o] then begin
      beste := beste + hin[o];
                              end
                      end;
                    end;
                   end;
end;


kann mir jemand helfen ?
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Mi 06.08.03 21:53 
Hallo

hin sind dynamische array , poste mal bitte wo du setlenght aufgerfufen hast
ich vermute mal: setlength(hin,36);

richtig in deinem falle wäre so
ausblenden Delphi-Quelltext
1:
2:
setlength(hin,37);
setlength(zurck,37);

dynamische array beginnen bei 0, nicht bei 1, somit sind es 37 Einträge, nicht 36.
mit hin[36] wärst du bei setlength(hin,36) beim 37. Eintrag und damit außerhalb vom reserviertem speicher, der gurnd für die ungültige Zeigerop. beim setzen kommt sie evtl nicht, aber beim auslesen.

von der sache ist
Zitat:

hin[1] := 'Aa';

ein verschenkter platz, und hier wird es weiter krachen

Zitat:

procedure decodierung(decoder : string; hin : array of string; zurck : array of string; var bester : string; var beste : string);
var i,j,o : integer;
uber,uber2 : string;
zahl : boolean;
begin
zahl := false;
i := length(decoder);
for j := 1 to i do begin

if zahl = false then begin

for o := 0 to 36 do begin //// ********* 1 )
uber := hin[o]; // 2)
uber2 := zurck[o]; // 2)

if decoder[j] = uber2[2] then begin

1) du willst bestimmt von 1 beginnen nicht von 0,
hin[0] ist '' belegt und wenn du noch im Shcleifendurchlauf o:=0 drin hast kracht es selbst bei uber[2] und uber2[1], weil gar kein 1. oder 2. Zeichen im string ist

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Mi 06.08.03 22:22 
Andreas_Sans hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
form4.label4.caption := beste + ' Sekunde(n)';					



... muß das nicht

ausblenden Delphi-Quelltext
1:
Form4.Label4.Caption:=<span style="font-weight: bold">Bester</span>+' Sekunde(n)';					


heißen??? :roll:

_________________
Hasta La Victoria Siempre
Andreas_Sans Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: Mi 06.08.03 23:24 
danke

@Keldorn : das mit der Länge des arrays war dran schuld