Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi inkompatibilität von dateitypen (https://www.delphipraxis.net/66689-inkompatibilitaet-von-dateitypen.html)

3_of_8 2. Apr 2006 18:50

Re: inkompatibilität von dateitypen
 
@ erzeugt einen Pointer und das [1] lässt ihn aufs erste Zeichen des Strings zeigen. Ein String ist 1-basiert, nicht wie normale dynamische Arrays 0-basiert. Bei "alten" Strings kann man mit s[0] auf die Länge des Strings zugreifen, bei den "neuen" geht das nicht mehr.

Ein PChar ist definiert als Pointer auf das erste Zeichen einer Zeichenkette, terminiert durch ein Nullbyte.

Mit @s[1] machst du genau das. PChar(s) kann man genauso hernehmen.

happyaura 2. Apr 2006 19:08

Re: inkompatibilität von dateitypen
 
das hab ich eben durch rumspielen und fehlermeldungen interpretieren auch noch mal rausbekommen. bin sonst eher in der c welt unterwegs, da sind die strings ein wenig anders organisiert...
besten dank noch mal für Deine erläuterungen.

qb-tim 7. Apr 2006 14:50

Re: inkompatibilität von dateitypen
 
Was genau ist PChar?

Integer = ganze Zahl
Real = Zahl
String = Text
PChar = :?:

mkinzler 7. Apr 2006 14:53

Re: inkompatibilität von dateitypen
 
Pointer to Char: Ein Zeiger auf eine Char7erstes Zeichen eines nullterminierten Strings.

qb-tim 7. Apr 2006 14:54

Re: inkompatibilität von dateitypen
 
Noch 'ne Frage:

Was bewirkt das false (bzw. true) bei CopyFile?

Delphi-Quellcode:
CopyFile(PChar('Datei1.bsp'),PChar('Datei2.bsp'),false);

Dale 7. Apr 2006 15:03

Re: inkompatibilität von dateitypen
 
Ist der Parameter "False", dann wird eine schon vorhandene Datei überschrieben, ansonsten liefert die Funktion "False" zurück.

mkinzler 7. Apr 2006 15:05

Re: inkompatibilität von dateitypen
 
Die Delphihilfe hätte dir gesagt, das der 3.Paramter angibt ob bei Existieren der Zieldatei ein Fehler ausgelöst wird oder diese überschrieben wird.

[Edit: war wohl zu langsam ...]

raiguen 7. Apr 2006 16:38

Re: inkompatibilität von dateitypen
 
Moin :-)
Der letzte Parameter (True oder False) gibt an, was geschehen soll, wenn die Zieldatei schon vorhanden ist -> bei False wird die Zieldatei ohne Rückfrage überschrieben, bei True bricht die CopyFunktion ab.

Um zu verhindern, dass ggf. eine vorhandene Datei überschrieben wird, entweder VOR dem CopyFile(...) mit FileExists(...) abfragen oder aber so
Code:
if CopyFile(...) = 0 then //Fehler->ZielDatei bereits vorhanden
  ...

Zitat:

Zitat von Dale
Ist der Parameter "False", dann wird eine schon vorhandene Datei überschrieben, ansonsten liefert die Funktion "False" zurück.

DIe Funktion gibt keinen Boolschen Wert zurück, sondern einen Integer: bei Fehler ist der Wert 0, bei erfolgreichem Kopieren ist der Wert größer Null.

himitsu 7. Apr 2006 19:37

Re: inkompatibilität von dateitypen
 
Zitat:

Zitat von raiguen
Code:
if CopyFile(...) = 0 then //Fehler->ZielDatei bereits vorhanden
  ...

Die Fehlerbeschreibung gefällt mir aber nicht wirklich, denn ein Fehler kann genauso sein:
-zuwenig Speicher
-Quelldatei nicht vorhanden/oder keine Leserechte
-Dateiname der Zieldatei fehlerhaft
-Zieldatei bereits vorhanden
...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 Uhr.
Seite 2 von 2     12   

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 by Thomas Breitkreuz