Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Arrays verursachen Zeigerprobleme (https://www.delphipraxis.net/53695-arrays-verursachen-zeigerprobleme.html)

Circle 21. Sep 2005 14:25


Arrays verursachen Zeigerprobleme
 
Hallo zusammen
Ich zeig gleich mal den code.

Delphi-Quellcode:
procedure TForm1.JvButton1Click(Sender: TObject);
var email : string;
    wurzel : integer;
    i, j : integer;
    codes : array of integer;
    res : array of integer;
begin
  JvEdit2.Text := '';
  Setlength(codes,1);
  SetLength(res,1);
  email := '';
  email := JvEdit1.Text;
  wurzel := 163;

  SetLength(codes, Length(email));
  SetLength(res, Length(email));

  for i := 1 to Length(email) do begin
    codes[i] := ord(email[i]);
    ShowMessage(IntToStr(codes[i]));
  end;

  for j := 1 to Length(email) do begin
    res[j] := codes[j] * wurzel;
    ShowMessage(IntToStr(res[j]));
    JvEdit2.Text := (JvEdit2.Text + IntToStr(res[j]) + ':');
  end;

  end;
wie man sieht, ist es eine einfache art buchstaben zu "code"zahlen umzurechnen.
das funktioniert eigentlich auch, bis auf das problem, das immer wieder die fehlermeldung "unzulässige zeigeroption" oder so erscheint. er gibt mir das resultat zwar aus. wenn ich z.b. ins textfeld "test" eingebe, funktionierts. wenn ich das programm jetzt schliesse kommt wieder der fehler. oder wenn ich nach der eingabe von test, z.b. nur tes schreibe oder einfach was anderes, kommt der fehler auch. weiss wer woran das liegen könnte?

ibp 21. Sep 2005 14:47

Re: Arrays verursachen Zeigerprobleme
 
alter fehler aber immer wieder vorkommender fehler!
Dynamische arrays beginnen bei 0 und gehen bis Anzahl-1 !!!

hier...

Delphi-Quellcode:
procedure TForm1.JvButton1Click(Sender: TObject);
var email : string;
    wurzel : integer;
    i : integer;
    codes : array of integer;
    res : array of integer;
    anzahl:integer;
    anzeige:string;
begin
  anzeige:='';
  email := JvEdit1.Text;
  wurzel := 163;

  anzahl :=Length(email);

  SetLength(codes, anzahl);
  SetLength(res, anzahl);

  for i := 0 to anzahl-1 do
  begin
    codes[i] := ord(email[i+1]);
    res[i] := codes[i] * wurzel;
    anzeige:= anzeige + IntToStr(res[i]) + ':';
  end;
  JvEdit2.Text := anzeige;
end;

Circle 21. Sep 2005 14:50

Re: Arrays verursachen Zeigerprobleme
 
joppp :D tnx, hab ich nedmal gemerkt da der stringarray bei 1 anfing. tnx

leddl 21. Sep 2005 14:54

Re: Arrays verursachen Zeigerprobleme
 
:roll: email ist ja auch ein String, der beginnt bei 1. Es ging um das dynamische Array codes. ;)

//Edit: Wie frech! :lol: Da editiert der Schelm doch einfach, während ich schreibe und ich bekomme keinen roten Kasten :lol:

ibp 21. Sep 2005 15:01

Re: Arrays verursachen Zeigerprobleme
 
@leddle: auch ein immer wieder gerne gemachter fehler :wink: aber dafür ist ja der edit-button :thumb:

die frage ist doch warum machst du das überhaupt mit dyn arrays?

Delphi-Quellcode:
procedure TForm1.JvButton1Click(Sender: TObject);
var email : string;
    i : integer;
    anzeige:string;
begin
  anzeige:='';
  email := JvEdit1.Text;

  for i := 1 to length(email) do
  begin
    anzeige:= anzeige + IntToStr(ord(email[i]) * 163) + ':';
  end;

  JvEdit2.Text := anzeige;
end;

Circle 21. Sep 2005 15:38

Re: Arrays verursachen Zeigerprobleme
 
ich mach das mit dyn-arrays, da ich ja nicht weiss wie lange die eingegebene e-mail adresse ist.

leddl 21. Sep 2005 15:43

Re: Arrays verursachen Zeigerprobleme
 
...was ja das Benutzen eines Strings, wie ibp es vorgeschlagen hat, nicht wirklich ausschließt. :zwinker:

PS: @ibp: Ich lieeeeebe deinen Avatar :lol:

//Edit:
Aber IMHO läßt sich dein Code auch noch kräftig zusammenfassen und entmüllen. ;)
//Edit2:
:shock: War natürlich nicht an ibp gerichtet, sondern an Circle :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz