Entwickler-Ecke
Sonstiges (Delphi) - Wo finde ich die richtigen Funktionen?
Nano-Ware - Di 03.04.12 11:26
Titel: Wo finde ich die richtigen Funktionen?
Hey,
in
diesem Thread [
http://www.delphi-forum.de/viewtopic.php?t=108962] habe ich mich geäußert, dass in Delphi alles kompliziert währe und bekam eine sehr kurze und einfache Form des Codes, den ich vorher vergeblich gesucht habe. Ich habe in Google nach "Delphi laufwerke" und "Delphi laufwerke ausgeben" usw gesucht und bekam unter anderem sowas:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure LoadLogicalDrives(Strings: TStrings); var S: DWORD; AllStrings, CurrentString: PChar; begin S := 255; GetMem(AllStrings, Succ(S)); GetLogicalDriveStrings(S, AllStrings); try if AllStrings <> nil then begin CurrentString := AllStrings; while True do begin Strings.Add(StrPas(CurrentString)); Inc(CurrentString, Succ(StrLen(CurrentString))); if CurrentString[0] = #0 then Break; end; end; finally FreeMem(AllStrings); end; end; |
gleiche Funktionalität hat aber Folgendes:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| var s : String; begin
for s in TDirectory.GetLogicalDrives do ShowMessage(s);
end; |
Nur wo finde ich das? Diese Art ist wohl relativ neu, sollte aber doch trotzdem irgendwo zu finden sein.
Nur wo?
Narses - Di 03.04.12 11:33
Moin!
Nano-Ware hat folgendes geschrieben : |
Nur wo finde ich das? Diese Art ist wohl relativ neu, sollte aber doch trotzdem irgendwo zu finden sein. |
Wie wäre es mit der Delphi-Hilfe? Sowas sollte doch wohl bei jeder Version dabei sein (auch wenn die neueren Hilfen eher... bescheiden... ausgefallen sind). ;) :les:
Nano-Ware hat folgendes geschrieben : |
gleiche Funktionalität hat aber Folgendes: |
Wenn du in den Quelltext schaust, wirst du vermutlich sehr ähnlichen Code finden, denn das läuft immer irgendwie auf die WinAPI hinaus, nur dort kommt man an diese Informationen. :nixweiss: Und bei neuen Delphi-Versionen haben die Entwickler halt schon wieder eine Menge mehr an "Komfort" integriert. Im Netz finden sich aber vermutlich deshalb mehr Beispiele für ältere Versionen, weil die Beispiele zum einen schon älter sind und zum anderen unter mehr Versionen laufen, als Code, der nur in sehr neuen Ausgeben funktioniert. :idea:
cu
Narses
Nersgatt - Di 03.04.12 11:46
Das Beispiel kam von mir. Ich wusste auch nicht, dass es konkret diese Funktion gibt, hab sie aber innerhalb von 5 Minuten gefunden, nachdem Du sagtest, Du hättest das nicht hinbekommen.
Mir war bekannt, dass Delphi viele "solche" Funktionen jetzt in IOUtils für mich als Entwickler gekapselt hat. Also hab ich als erstes in den IOUtils nach irgendwas gesucht, was TDrives oder so ähnlich heißen könnte. Sowas habe ich nicht gefunden. Also habe ich nach dem gesucht, was dem logisch am nächsten ist. Also hab ich mir TDirectory vorgenommen und einfach nach "driv" durchsucht. Und siehe da, eine Funktion "GetLogicalDrives". Das könnte doch sein, was ich suche.... kurz in der Hilfe nachgelesen. Japp, das ist es.
Also, es ist von Vorteil, wenn man die grobe Struktur des Frameworks kennt, mit dem Arbeitet. Ob das jetzt die VCL, RTL oder auch das DotNET-Framework ist dabei egal, das trifft für alle Frameworks zu. Und so kann man einigermaßen zügig das finden, was man sucht.
Datumsfunktionen sucht man in DateUtils. Alles was mit Dateien zu tun hat in IOUtil. Strings? -> StrUtils. Basics in SysUtils. Usw.
Aber wie gesagt, das ist nicht delphispezifisch, sondern gilt für jedes Framework das man benutzt. Und wenn man 8 Stunden am Tag mit der VCL arbeitet, hat man das natürlich eher verinnerlicht, als wenn man nur 2 Stunden in der Woche ein bisschen mit Delphi rumspielt.
Kha - Di 03.04.12 12:04
Nersgatt hat folgendes geschrieben : |
Ob das jetzt die VCL, RTL oder auch das DotNET-Framework ist dabei egal, das trifft für alle Frameworks zu. |
In diesem Fall sogar im doppelten Sinne, denn IOUtils ist quasi 1:1 .NETs System.IO entnommen ;) .
Nano-Ware - Di 03.04.12 12:12
Ja. Nur ich wusste nichteinmal, dass die Unit IOUtils existiert. Dass man mit dem Namen auch an eventuelle Funktionen kommt hab ich schon selbst erfahren. Nur wo bitte finde ich generell die Units? Gibt es eventuell eine komplette Liste + Beschreibung der Units?
Nersgatt - Di 03.04.12 12:41
Nano-Ware hat folgendes geschrieben : |
Nur wo bitte finde ich generell die Units? Gibt es eventuell eine komplette Liste + Beschreibung der Units? |
Generell die Onlinehilfe... aber da sind so viele Units drin, die werden Dich schlichtweg erschlagen.
Arbeite mit Delphi. Versuch Deinen Weg nach Rom zu finden. Irgendwann wirst Du feststellen, dass Du viele Umwege nach Rom gegangen bist. Dann wirst Du Deinen Code umstellen. Und wieder ein Jahr später wirst Du feststellen, dass Du immer noch Umwege gehst. Das passiert mir auch täglich. Dann führt man halt ein Refactoring durch und ist hinterher zufrieden mit sich, weil der Code wieder ein Stück sauberer ist.
Delete - Di 03.04.12 12:50
Nano-Ware hat folgendes geschrieben : |
Nur wo bitte finde ich generell die Units? |
Im Source-Ordner deiner Delphi-Installation.
Nano-Ware hat folgendes geschrieben : |
Gibt es eventuell eine komplette Liste + Beschreibung der Units? |
Nicht daß ich wüßte. Vielleicht erstellt irgendwann mal jemand eine ...
SvenAbeln - Di 03.04.12 15:47
Perlsau hat folgendes geschrieben : |
Nano-Ware hat folgendes geschrieben : | Gibt es eventuell eine komplette Liste + Beschreibung der Units? |
Nicht daß ich wüßte. Vielleicht erstellt irgendwann mal jemand eine ... |
Natürlich gibt es so eine Liste:
Embarcadero DocWiki [
http://docwiki.embarcadero.com/Libraries/en/Unit_List]
Ansonsten findet dies auch in der Hilfe, je nach Delphi Version z.B. unter "RAD Studio / Bibliotheken-Referenz" oder auch "RAD Studio / RAD Studio VCL Referenz"
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!