![]() |
Copy,Pos Problem
also jungs ich weis nich ob ich auf dem schlauch stehe oder einfach nur blöd bin ich hab die 2 anwendungen schon 100 mal verwendet aber schaut euch das ma an
Delphi-Quellcode:
bekomm fehler string und integer nich kompatibel
var pfad :String;
k :string; begin if opendialog1.Execute then begin pfad:=opendialog1.FileName; k:=Pos('.',pfad); //hier der fehler k:=Copy(k,1,3); if k= '.bmp' then was soll der kack wo issn da ein integer wert? |
Pos() gibt einen Integer zurück, aber k ist ein String...
|
ahhhhhhhhhhhhhhhhhhhh ich bin soooo scheisse jezt sitz ich 20 min an dem fehler unn er wird mir nich klar .... baaaaaaaaaaa
pos gibts ja nur int werte zurück also bolean sozusagen eben war oder falsh 0 unn 1 määäää naja überflüssiger post sry :P |
Nein, pos liefert den Index des ersten Vorkommes von dem Substring im String.
|
em em noch schnell ne frage ....
habe das nun so
Delphi-Quellcode:
wie kann ich es dann machen, das der mit copy erst ab dem punkt das ausschneidet??? kann ja keine feste werte angeben wie 1,3 oder so ....
if pos('.',pfad) then
muss ich dazu die zeichen im string zählen -4 ... wenn ja wie ?? :roll: |
was willst du denn erreichen? Die Endung abschneiden, ändern oder nur mit irgendwas vergleichen?
|
endung vergleichen
also if k = '.bmp' then bla bla |
Du mußt von hinten den ersten Punkt suchen. Von vorne gibt das nichts, da im Dateinamen auch schon ein Punkt vorkommen kann.
Delphi-Quellcode:
function GetFileExt(const sFilename: String): string;
var rpos : integer; begin rpos := length(sFilename); if(pos('.',sFilename) > 0) then while(sFilename[rpos] <> '.') and (rpos > 0) do dec(rpos); Result := copy(sFilename,rpos - 1, length(sFilename)); end; |
ok thx nur was bedeutet diese Zeile???ß
Zitat:
|
Kuck mal in der Hilfe. Cursor in das uinbekannte Wort stellen und F1 drücken.
|
Hallo,
Zitat:
Wenn Du nur die Dateiendung haben willst, kannst Du auch auf Delphi-Bordmittel zurückgreifen. Mit
Code:
erhälst Du das gewünschte. Näheres zur Funktion "ExtractFileExt" findest Du in der Delphi-Hilfe.
if (ExtractFileExt(OpenDialog1.FileName)='.bmp') then
Ach ja, noch in der Uses-Klauses die Unit "SysUtils" aufnehmen. |
SUPER danke genau sowas habe ich gesucht :hello:
|
Zitat:
die Zeile zählt Deine Variable um ein runter. Das gleiche würdest Du mit MyVar := MyVar -1; erreichen. Das gegenstück dazu ist Inc(MyVar);. Das zählt immer um 1 nach oben. Grüsse, Daniel :hi: |
Moin Luckie,
statt der Methode das letzte Auftauchen eines Zeichens selber zu implementieren, kann man auch die Funktion LastDelimiter verwenden. (wenn ich mich recht erinnere verwendet ExtractFileExt diese auch). |
Jupp, kann man, aber dan braucht man wieder die SysUtils und du kennst mich ja. :wink:
|
Moin Luckie,
ich weiss :mrgreen: Auf LastDelimiter hinzuweisen konnte ich mir trotzdem nicht verkneifen, immerhin soll's ja auch noch einige geben, mich z.B., die die Delphi Units verwenden ;-) Eines würde mich allerdings mal interessieren: Kommt es in Deinen Programmen eigentlich auch mal vor, dass Du Exceptions auslöst (ich möchte jetzt nicht alle durchsehen deswegen ;-) ) ? Der Weg dies über die Windows API durchzuführen ist mir nämlich etwas zu aufwändig (bzw. ich bin noch nicht so ganz durchgestiegen, wie das genau zu machen ist). Ich frag' nur, weil diese Klasse ja auch in sysutils deklariert ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:59 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