Autor Beitrag
Tossi
Hält's aus hier
Beiträge: 16

Win 7
Delphi 2010, VS C#, SQL
BeitragVerfasst: Sa 04.01.03 00:15 
Hallo Leute,

ich glaube ich krieg Plugg. Vor ein paar Minuten konnte ich noch in Delphi super arbeiten und nun spinnt es. Ich möchte nicht außergewöhnliches machen, nur die Länge eines Strings haben. Aber Delphi weigert sich diese in einen Integer zu speichern. Im Editor mit Alt+F5 bekomme ich nur "Inaccessible Value". Die Variable ist richtig implementiert. Hier die Stelle:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var
        p   : integer;
        s,t : AnsiString;
begin
  s := 'Hallo';
  p := Length(s);
  t := IntToStr(Length(s));
  Label1.Caption := IntToStr(Length(s));
end;

In t steht dann der richtige Wert, aber gecastet. p kann ich nicht auswerten, hat aber einen blauen Punkt an der Seite.

Weiß jemand einen Rat?????

Den Rechner habe ich schon neu gestartet, ohne Änderung!

Mfg
Tossi

(05.01. 00:08 Tino) Code-Tags hinzugefügt.
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Sa 04.01.03 01:18 
Hi Tossi,

es gibt zwei möglichkeiten für Deine Procedure um Dir die Länge anzeigen zu lassen :

1.Möglichkeit :
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject); 
var 
  s : AnsiString; 
begin 
  s := 'Hallo'; 
  Label1.Caption := IntToStr(Length(s)); 
end;


2.Möglichkeit :
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button1Click(Sender: TObject); 
var 
  p : integer; 
  s : AnsiString; 
begin 
  s := 'Hallo';   
  p := Length(s); 
  Label1.Caption := IntToStr(p); 
end;


Code ist nicht getestet.
Tossi Threadstarter
Hält's aus hier
Beiträge: 16

Win 7
Delphi 2010, VS C#, SQL
BeitragVerfasst: Sa 04.01.03 02:32 
Hey,
danke für Deine schnelle Antwort. Ich werde es gleich testen. Aber warum wird bein Debuggen der Inhalt der Variable p nicht angezeigt???
Im cBuilder geht das einwandfrei.


thx
Tossi
Brueggendiek
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: Sa 04.01.03 03:18 
Hallo Tossi!

Der Debugger kann wahrscheinlich "wegen Optimierung" die Variable nicht anzeigen. Solange Dein Programm nicht fertig ist, solltest Du bei "Projekt", "Optionen", "Compiler" den Haken bei Optimierung rausnehmen, dann klappts auch mit dem Debugger!

Wenn das Programm fertig ist, den Haken wieder setzen und mit "Projekt", "Erzeugen" alles neu compilieren.

Delphi hält die Variablen bei Optimierung möglichst in Registern und löscht sie, wenn sie nicht mehr gebraucht werden - d.h. nach dem letzten Zugriff im Geltungsbereich.

Gruß

Dietmar Brüggendiek
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 04.01.03 05:58 
Du weißt der Variable p zwar eine Wert zu, aber du benutzt ihn nicht weiter. Und Delphi ist so clever und optimiert die überflüssige Zeile weg.