![]() |
Unit zu bestimmter Funktion herausfinden?
Hallo zusammen.
Es ist mir jetzt schon ein paar Mal passiert, dass ich in der OH eine wunderschöne knackige Funktion gefunden habe, die aber als "Undefinierter Bezeichner" bemängelt wurde. Den Namen der zugehörigen Unit habe ich dann meistens hier im Forum gefunden. Wie erfahre ich in Zukunft selbst, welche Unit eingebunden werden muss, falls mir wieder mal so ein undeclared entgegenschlägt? :gruebel: Gruß, Kasmus |
Re: Unit zu bestimmter Funktion herausfinden?
Hi und willkommen in der DP :hi: :dp:,
normalerweiße steht das ja so in der OH drinne
Code:
<kurze beschreibung>
<unit> <kategorie> <syntax> <Beschreibung> Also die Unit die unter Unit steht in Uses eintragen |
Re: Unit zu bestimmter Funktion herausfinden?
Also enfach tapfer F1 über dem Wort drücken und dann oben nach "Unit ..." suchen. Diese dann einbinden.
|
Re: Unit zu bestimmter Funktion herausfinden?
Danke für das herzliche Willkommen. :-D
Ich bin scheinbar ein wenig blind... Konkret geht es gerade um CompareStrings - da steht nur "(Methode von TStrings)". Trotzdem ist es undeclared. Gruß, Kasmus |
Re: Unit zu bestimmter Funktion herausfinden?
Und wenn du auf TStrings klickst dann kommt:
Code:
TStrings ist die Basisklasse für Objekte, die eine Liste mit Strings darstellen.
Unit Classes [...] |
Re: Unit zu bestimmter Funktion herausfinden?
Schon, aber Classes steht schon in der Liste:
Delphi-Quellcode:
Woran liegt's?
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Types, Buttons, ShellApi; Gruß, Kasmus |
Re: Unit zu bestimmter Funktion herausfinden?
Hi!
Dann musst du wohl am Besten etwas Code zeigen. Evtl. liegt es ja nicht daran, dass die Funktion undefiniert ist, sondern etwas anderes (Variable etc.) Zeig am Besten mal her ... Ciao fkerber |
Re: Unit zu bestimmter Funktion herausfinden?
Hi. Anscheinend liegt es nicht an seinem Code. Ich hab grade mal probier:
Delphi-Quellcode:
und er hat sich auch über einen undefinierten Bezeichner beschwert. Aber es heißt ja auch "Methode von TStrings". Also kann man das vielleicht nicht so direkt aufrufen :gruebel:
CompareStrings('Hallo','Halloho');
Als Alternative könnte dir vielleicht "AnsiCompareText" aus der Unit SysUtils weiterhelfen. Die Funktion beachtet aber beim Vergleichen die Groß- und Kleinschreibung nicht. Man liest sich, Stanlay :hi: |
Re: Unit zu bestimmter Funktion herausfinden?
Hmm, die müsste eigentlich in TStrings enthalten sein, aber wenn ich mal eine TStrings-Objektvariable mache und mit Hilfe der Codevervollständigung nachschaue, scheints die nicht zu geben, und zwar auch nicht bei TStringList...Wurde die vielleicht vergessen und ist zufällig noch in der Hilfe?
@Kasmus: Welches Delphi hast du? Bei meinem D7Ent gibts die Methode nicht mehr |
Re: Unit zu bestimmter Funktion herausfinden?
Moin alcaeus,
Zitat:
Es handelt sich aber um eine interne, als Protected deklarierte, Methode, die man in eigenen Ableitungen von TStrings (oder TStringList), verwenden kann, um, z.B., die "Unart" von IndexOf die Gross- / Kleinschreibung nicht zu beachten, abzuändern. |
Re: Unit zu bestimmter Funktion herausfinden?
Diese Funktionen gibt es noch in D7, aber man kann sie eben nicht so einfach verwenden.
:idea: Es steht ja in der Hilfe, dass man diese Funktion nur in abgeleiteten Klassen verwenden kann. Zitat:
Zitat:
Delphi-Quellcode:
Hier die Funktionen dazu:
TStrings = Class(TPersistent)
Protected Function CompareStrings(Const S1, S2: String): Integer; virtual; End; TStringList = Class(TStrings) Protected Function CompareStrings(Const S1, S2: String): Integer; override; End;
Delphi-Quellcode:
Und wie ihr seht, braucht man CompareStrings auch nicht zu verwenden, denn diese machen den Vergleich eh nicht selber.
Function TStrings.CompareStrings(Const S1, S2: String): Integer;
Begin Result := AnsiCompareText(S1, S2); End; Function TStringList.CompareStrings(Const S1, S2: String): Integer; Begin If CaseSensitive Then Result := AnsiCompareStr(S1, S2) Else Result := AnsiCompareText(S1, S2); End; Also greift do lieber auf die verfügbaren Funktionen zurück :zwinker:
Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
Begin If AnsiCompareText('Hallo', 'Halloho') ... If AnsiCompareStr('Hallo', 'Halloho') ... End; Und wer glaubt dort ist es zu ende mit dem Weiterleiten, der Irrt total ...
Delphi-Quellcode:
Function CompareString; external Kernel32 Name 'CompareStringA';
Function AnsiCompareText(Const S1, S2: String): Integer; Begin Result := CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, PChar(S1), Length(S1), PChar(S2), Length(S2)) - 2; End; Function AnsiCompareStr(Const S1, S2: String): Integer; Begin Result := CompareString(LOCALE_USER_DEFAULT, 0, PChar(S1), Length(S1), PChar(S2), Length(S2)) - 2; End; // CompareStrings > AnsiCompareStr > CompareString (Windows) // CompareStrings > AnsiCompareText > CompareString (Windows) [EDIT] ich hätte mich wohl nicht nebenbei 'nen Film gucken sollen fast zwei Stunden für 'nen Beitrag ist schon fast Weltrecord :roll: |
Re: Unit zu bestimmter Funktion herausfinden?
Zitat:
|
Re: Unit zu bestimmter Funktion herausfinden?
Danke euch allen! :wink:
Ich benutze übrigens auch Delphi 7 Personal. Gruß, Kasmus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 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