![]() |
Delphi Bug
Hi, bei meinem Delphi XE 5 geht gerade irgendwie nicht mehr das ich z.B. schreibe
Delphi-Quellcode:
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..
Label1.Caption
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; |
AW: Delphi Bug
Kannst Du vielleicht den kompletten Code posten damit man das reproduzieren kann?
|
AW: Delphi Bug
Code:
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.
Lschreibnach := 'User'+IntToStr(Lind));
|
AW: Delphi Bug
Ah ok, danke ;) hat geklappt :thumb:
|
AW: Delphi Bug
Wenn
Delphi-Quellcode:
in
Linte
Delphi-Quellcode:
der Klasse definiert ist (also ein Feld der Klasse ist) dann nenn die doch einfach
private
Delphi-Quellcode:
und schon kannst du dir den Kommentar
Finte
Delphi-Quellcode:
sparen.
// Linte ist in private deklariert
Und wenn du die auch noch in
Delphi-Quellcode:
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.
FCount
Kommentare sind nicht schlecht, aber sollten sparsam eingesetzt werden und nicht Offensichtliches oder eine schlechte Namenskonvention ausbügeln. Auch dein
Delphi-Quellcode:
halte ich für schlecht, denn der Wert wird im Zusammenhang mit der INI als Section-Angabe benutzt.
Lschreibenach
Meine Empfehlung ist hier entweder
Delphi-Quellcode:
oder auch
LSection
Delphi-Quellcode:
.
LUserSection
Als Konstanten kannst du auch noch folgende definieren:
Delphi-Quellcode:
Das Schreiben in die Ini sieht dann so aus:
const
INIFILE_NAME = 'C:\ProgramData\Lukas\Test.ini'; USER_NAME_IDENT = 'Name'; USER_NAME_DEFAULT = 'unbekannt';
Delphi-Quellcode:
und das Lesen
LIni := TIniFile.Create( INIFILE_NAME );
try LIni.WriteString( LUserSection, USER_NAME_IDENT, FName[LIdx] ); finally LIni.Free; end;
Delphi-Quellcode:
Ach ja, den Pfad würde ich eigentlich nicht hart kodieren, sondern KnownFolders oder SpecialFolders fragen
LIni := TIniFile.Create( INIFILE_NAME );
try FName[LIdx] := LIni.ReadString( LUserSection, USER_NAME_IDENT, USER_NAME_DEFAULT ); finally LIni.Free; end; |
AW: Delphi Bug
Da du ja XE5 hast, kannst du natürlich auch folgende "Schweinerei" benutzen:
Delphi-Quellcode:
benötigt wird dazu das hier
uses
Custom.Types; const INIFILE_NAME : TFilePath = '%ProgramData%\Lukas\Test.ini'; LIni := TIniFile.Create( INIFILE_NAME.Expand );
Delphi-Quellcode:
Ich überlasse es deiner Fantasie, was du da in den Helper noch so alles reinbauen möchtest ...
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 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