AGB  ·  Datenschutz  ·  Impressum  







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

Delphi Bug

Ein Thema von Luki206 · begonnen am 21. Feb 2014 · letzter Beitrag vom 21. Feb 2014
Antwort Antwort
Luki206
(Gast)

n/a Beiträge
 
#1

Delphi Bug

  Alt 21. Feb 2014, 18:19
Hi, bei meinem Delphi XE 5 geht gerade irgendwie nicht mehr das ich z.B. schreibe Label1.Caption Da bekomme ich nach dem Punkt nicht mehr die gewohnte Liste sondern eine Liste mit völlig anderen und auch Unbekannten (wenn auch nur mir) Inhalten.. Ich kann jetzt auch kein Screenshot machen weil sonst die Liste immer wieder sich ausblendet..
Aber hier mal mein Code:
Delphi-Quellcode:
procedure TForm1.WriteIni;
var Lini: TInifile; Lind: Integer; Lschreibnach: String;
begin
  Lini := TIniFile.Create('C:\ProgramData\Lukas\Test.ini');
  try
    for i := 0 to Linte -1 do begin //Linte ist in private deklariert
     Lschreibnach := 'User'+IntToStr(Lind));
      Lini. //Hier bekomme ich das komische Fenster zu sehen..
     end;
  finally
   Lini.Free;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Delphi Bug

  Alt 21. Feb 2014, 18:22
Kannst Du vielleicht den kompletten Code posten damit man das reproduzieren kann?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.530 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Delphi Bug

  Alt 21. Feb 2014, 18:33
Code:
Lschreibnach := 'User'+IntToStr(Lind));
Hier hast Du eine überflüssige Klammer am Ende. Daher erkennt Delphi die LIni-Variable nicht. Die automatische Ergänzung funktioniert nur bis dahin, wo Dein Source-Code ohne Fehler ist.
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#4

AW: Delphi Bug

  Alt 21. Feb 2014, 19:07
Ah ok, danke hat geklappt
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Delphi Bug

  Alt 21. Feb 2014, 20:10
Wenn Linte in private der Klasse definiert ist (also ein Feld der Klasse ist) dann nenn die doch einfach Finte und schon kannst du dir den Kommentar // Linte ist in private deklariert sparen.

Und wenn du die auch noch in FCount benennen würdest, dann ist dir und allen anderen klar, dass hier ein Klassenfeld ist, wo eine Anzahl gespeichert ist. Und das alles ohne einen Kommentar.

Kommentare sind nicht schlecht, aber sollten sparsam eingesetzt werden und nicht Offensichtliches oder eine schlechte Namenskonvention ausbügeln.

Auch dein Lschreibenach halte ich für schlecht, denn der Wert wird im Zusammenhang mit der INI als Section-Angabe benutzt.

Meine Empfehlung ist hier entweder LSection oder auch LUserSection .

Als Konstanten kannst du auch noch folgende definieren:
Delphi-Quellcode:
const
  INIFILE_NAME = 'C:\ProgramData\Lukas\Test.ini';
  USER_NAME_IDENT = 'Name';
  USER_NAME_DEFAULT = 'unbekannt';
Das Schreiben in die Ini sieht dann so aus:
Delphi-Quellcode:
LIni := TIniFile.Create( INIFILE_NAME );
try
  LIni.WriteString( LUserSection, USER_NAME_IDENT, FName[LIdx] );
finally
  LIni.Free;
end;
und das Lesen
Delphi-Quellcode:
LIni := TIniFile.Create( INIFILE_NAME );
try
  FName[LIdx] := LIni.ReadString( LUserSection, USER_NAME_IDENT, USER_NAME_DEFAULT );
finally
  LIni.Free;
end;
Ach ja, den Pfad würde ich eigentlich nicht hart kodieren, sondern KnownFolders oder SpecialFolders fragen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Delphi Bug

  Alt 21. Feb 2014, 20:57
Da du ja XE5 hast, kannst du natürlich auch folgende "Schweinerei" benutzen:
Delphi-Quellcode:
uses
  Custom.Types;

const
  INIFILE_NAME : TFilePath = '%ProgramData%\Lukas\Test.ini';


LIni := TIniFile.Create( INIFILE_NAME.Expand );
benötigt wird dazu das hier
Delphi-Quellcode:
unit Custom.Types;

interface

type
  TFilePath = type string;

  TFilePathHelper = record helper for TFilePath
    function Expand : TFilePath;
    function Exists( FollowLink : Boolean = True ) : Boolean;
    function GetDirectoryName : string;
    function GetFileName : string;
    function GetFileNameWithoutExtension : string;
    function GetFileExtension : string;
    function ForceDirectories : Boolean;
  end;

implementation

uses
  System.SysUtils,
  Winapi.Windows,
  System.IOUtils;

{ TFilePathHelper }

function TFilePathHelper.GetDirectoryName : string;
begin
  Result := TPath.GetDirectoryName( Self.Expand );
end;

function TFilePathHelper.GetFileExtension : string;
begin
  Result := TPath.GetExtension( Self.Expand );
end;

function TFilePathHelper.GetFileName : string;
begin
  Result := TPath.GetFileName( Self.Expand );
end;

function TFilePathHelper.GetFileNameWithoutExtension : string;
begin
  Result := TPath.GetFileNameWithoutExtension( Self.Expand );
end;

function TFilePathHelper.Exists( FollowLink : Boolean = True ) : Boolean;
begin
  Result := TFile.Exists( Self.Expand, FollowLink );
end;

function TFilePathHelper.Expand : TFilePath;
var
  LSize : Cardinal;
begin
  SetLength( Result, MAX_PATH + 1 );
  LSize := ExpandEnvironmentStrings( PChar( Self ), PChar( Result ), Length( Result ) );
  SetLength( Result, LSize - 1 );
end;

function TFilePathHelper.ForceDirectories : Boolean;
begin
  Result := System.SysUtils.ForceDirectories( Self.GetDirectoryName );
end;

end.
Ich überlasse es deiner Fantasie, was du da in den Helper noch so alles reinbauen möchtest ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:42 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