AGB  ·  Datenschutz  ·  Impressum  







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

Boolean.ToString

Ein Thema von Delbor · begonnen am 12. Nov 2019 · letzter Beitrag vom 12. Nov 2019
Antwort Antwort
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

Boolean.ToString

  Alt 12. Nov 2019, 18:35
Delphi-Version: 10.2 Tokyo
Hi zusammen

Eigentlich wollte ich mir nur mal eine kleinen Spickzettel schreiben und hab in der prozedur AddNewNode einige Listeneinträge meiner Reportliste hinzugefügt:
Delphi-Quellcode:
  FReportlist.Add('procedure TOpenFileFrame.AddNewNode');
  FReportlist.Add('Node.Text := ' + Node.Text);
  FReportlist.Add('LRealName := ' + aRealName);
  FReportlist.Add('aCaption := ' + aCaption);
  FReportlist.Add('LIsdirectory := '+ aIsdirectory.ToString);
  FReportlist.Add('-***************************************-');
Das sieht dann so aus:

Zitat:
procedure TOpenFileFrame.FileSearcher1MatchFound
----------------
procedure TOpenFileFrame.AddNewNode
LRealName := P:\autorun.inf
LIsdirectory := 0
-------------------
procedure TOpenFileFrame.FileSearcher1MatchFound
----------------
procedure TOpenFileFrame.AddNewNode
LRealName := P:\Bahnforum
LIsdirectory := -1
-------------------
procedure TOpenFileFrame.FileSearcher1MatchFound
----------------
procedure TOpenFileFrame.AddNewNode
LRealName := P:\Cache.mxc3
LIsdirectory := 0
-------------------
procedure TOpenFileFrame.FileSearcher1MatchFound
----------------
procedure TOpenFileFrame.AddNewNode
LRealName := P:\Delbor Word - HTML
LIsdirectory := -1

Bislang ging ich immer davon aus, dass in Delphi False := 0; und True := <> -0 glit, was nichts anderes bedeute, dass True auch schon mal den Wert 23 haben kann. Die obigen Zeilen zeigen aber, dass
  • aIsdirectory.ToString für True -1 und
  • aIsdirectory.ToString für False 0
zurückgibt. Das hier hat auch nicht besonders viel zur Klärung beigetragen. Was gilt jetzt? Oder kann es sein, dass der wiederholte Wert für True einfach Zufall ist?

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
312 Beiträge
 
Delphi 12 Athens
 
#2

AW: Boolean.ToString

  Alt 12. Nov 2019, 18:42
Kannst du uns zeigen, wie du die Variable aIsdirectory deklariert hast und mit welcher Funktion du anschließend einen Wert zugewiesen hast?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.995 Beiträge
 
Delphi 12 Athens
 
#3

AW: Boolean.ToString

  Alt 12. Nov 2019, 18:44
Die Funktion ToString ruft intern BoolToStr auf und dort steht nun mal:
Delphi-Quellcode:
const
  cSimpleBoolStrs: array [boolean] of String = ('0', '-1');
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#4

AW: Boolean.ToString

  Alt 12. Nov 2019, 18:44
Dass True -1 zurückgibt und False 0 ist schon richtig.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Boolean.ToString

  Alt 12. Nov 2019, 19:27
Deswegen mache ich immer myBoolean.ToInteger().ToString() 😎
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Boolean.ToString

  Alt 12. Nov 2019, 19:38
Hi zusammen
Das ist der Ursprung in einer Hilfsklasse von TFilesearcher:
Delphi-Quellcode:
class function TSearchRecAnalyzer.IsDirectory(const
  SearchRec: TSearchRec): Boolean;
begin
  Result := TSearchRecAnalyzer.ContainsAttributes(SearchRec, faDirectory);
end;
Diese Prozedure wird aufgerufen, wenn TFileSearcher eine Datei oder einen Ordner gefunden hat:
Delphi-Quellcode:
procedure TOpenFileFrame.FileSearcher1MatchFound(Sender: TObject;
  const Path: string; const FileInfo: TSearchRec);
  var Complettpath, J: String;
begin
  if Assigned(FCurrentNode) then
  begin
    Complettpath := IncludeTrailingPathDelimiter(Path) + FileInfo.Name;
    AddNewNode(FCurrentNode, FileInfo.Name, Complettpath,TSearchRecAnalyzer.IsDirectory(FileInfo));// <<<=
    FReportlist.Add('-------------------');
    FReportlist.Add('procedure TOpenFileFrame.FileSearcher1MatchFound');
    FReportlist.Add('----------------');
  end;
end;
in der Prozedur AddNewNode werden dem erzeugten Knoten schliesslich die Werte der Datei übergeben, die er repräsentiern soll:
Delphi-Quellcode:
  New(NameRec);
  NameRec^.RealName := aRealName;
  NameRec^.Caption := aCaption;
  NameRec^.IsDirectory := aIsdirectory;
  NameRec^.IsDB := LIsDB;
  Node.Data := NameRec;

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Boolean.ToString

  Alt 12. Nov 2019, 19:56
Hi Uwe Raabe
Danke für die Antwort!
Die Funktion ToString ruft intern BoolToStr auf und dort steht nun mal:
Delphi-Quellcode:
const
  cSimpleBoolStrs: array [boolean] of String = ('0', '-1');
Das klärt alles!

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  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 17:23 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