Entwickler-Ecke
Dateizugriff - Wie am besten TFileStream.Write?
WeBsPaCe - Fr 24.06.11 16:22
Titel: Wie am besten TFileStream.Write?
Hi, gibts einen Grund für a statt b oder andersherum?
Delphi-Quelltext
1: 2: 3: 4: 5:
| var filename, data: AnsiString; begin with TFileStream.Create(filename, fmCreate) do begin |
Delphi-Quelltext
1:
| Write(data[1], Length(data)); |
Delphi-Quelltext
1:
| Write(PChar(data)^, Length(data)); |
Dankeschön.
jaenicke - Fr 24.06.11 16:36
Bei a wird zusätzlich UniqueString aufgerufen um sicherzustellen, dass der Referenzzähler nicht größer als eins ist (also mehrere Referenzen existieren). Deshalb ist das ein wenig langsamer.
Zudem halte ich die zweite Version auch für sinnvoller von der Syntax her:
Ich nehme den Pointer auf ein Zeichen und dereferenziere diesen Pointer.
Nebenbei wird das auch in den VCL-Quelltexten so benutzt.
WeBsPaCe - Fr 24.06.11 23:19
jaenicke hat folgendes geschrieben : |
Zudem halte ich die zweite Version auch für sinnvoller von der Syntax her:
Ich nehme den Pointer auf ein Zeichen und dereferenziere diesen Pointer. |
Geschmackssache: wenn man String als Array of Char sieht?
jaenicke hat folgendes geschrieben : |
Bei a wird zusätzlich UniqueString aufgerufen um sicherzustellen, dass der Referenzzähler nicht größer als eins ist (also mehrere Referenzen existieren). Deshalb ist das ein wenig langsamer. |
Okay. Macht Sinn. Dann wollen wir mal optimieren. ;-)
Danke!
jaenicke - Sa 25.06.11 05:39
WeBsPaCe hat folgendes geschrieben : |
Geschmackssache: wenn man String als Array of Char sieht? |
Dass das auch Sinn macht, wenn man es weiß, ist klar.
Aber wenn man nicht weiß was da passiert, denkt man eher, dass nur das eine Zeichen übergeben wird. ;-)
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!