Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   array of char UpperCase (https://www.delphipraxis.net/121862-array-char-uppercase.html)

EWeiss 6. Okt 2008 08:09

Re: array of char UpperCase
 
Zitat:

Zitat von alzaimar
Nur mal so:
Delphi-Quellcode:
Function Upcase(c : Char) : Char;
Und ein Array in Großbuchstaben geht so (zugegeben: Besonders pervers)
Delphi-Quellcode:
StrPCopy (PChar(@s),Uppercase(StrPas(PChar(@s))));

jo das funktioniert klasse auch ohne schleife ..

hab dann aber nocht nicht mein anderes Problem gelößt :cry:
Delphi-Quellcode:
zTmp := sResource + RightStr('0000' + LTrim(IntToStr(nCount)), 4);
zTmp := PChar(zTmp + '0001');
zData := PChar(IntToStr(hImage));
Zitat:

[Pascal Error] uGDIButton.pas(739): E2010 Incompatible types: 'Array' and 'string'
[Pascal Error] uGDIButton.pas(750): E2010 Incompatible types: 'Array' and 'PAnsiChar'
[Pascal Error] uGDIButton.pas(755): E2010 Incompatible types: 'Array' and 'PAnsiChar'
gruss Emil

EWeiss 6. Okt 2008 08:10

Re: array of char UpperCase
 
Zitat:

Zitat von NamenLozer
Warum machst du es dir denn so kompliziert mit dem Array? Nimm einfach einen String und alles ist gut...

Schau dir die Funktion an dann weißt du warum es nicht geht.

gruss Emil

Namenloser 6. Okt 2008 08:15

Re: array of char UpperCase
 
Zitat:

Zitat von EWeiss
Zitat:

Zitat von NamenLozer
Warum machst du es dir denn so kompliziert mit dem Array? Nimm einfach einen String und alles ist gut...

Schau dir die Funktion an dann weißt du warum es nicht geht.

gruss Emil

Ich hab mir die Funktion natürlich durchgelesen, aber ich sehe keine Stelle wo ein Array erforderlich ist. Du kannst statt integer(@Array) problemlos integer(@string[1]) benutzen und dir an anderen Stellen eine Menge aufwand sparen...

EWeiss 6. Okt 2008 08:22

Re: array of char UpperCase
 
Zitat:

Zitat von NamenLozer
Zitat:

Zitat von EWeiss
Zitat:

Zitat von NamenLozer
Warum machst du es dir denn so kompliziert mit dem Array? Nimm einfach einen String und alles ist gut...

Schau dir die Funktion an dann weißt du warum es nicht geht.

gruss Emil

Ich hab mir die Funktion natürlich durchgelesen, aber ich sehe keine Stelle wo ein Array erforderlich ist. Du kannst statt integer(@Array) problemlos integer(@string[1]) benutzen und dir an anderen Stellen eine Menge aufwand sparen...

ohne über Array zu gehen so wie du es beschrieben hast
bekomme ich bei
Delphi-Quellcode:
GetShortPathName(sResource, @zTmp, SIZEOF(zTmp));
nichts raus da ich hier einen Buffer benötige.

gruss Emil

DeddyH 6. Okt 2008 08:24

Re: array of char UpperCase
 
Wenn zTmp ein String ist:
Delphi-Quellcode:
GetShortPathName(sResource, @zTmp[1], Length(zTmp));

Namenloser 6. Okt 2008 08:26

Re: array of char UpperCase
 
Du hast ja auch nicht meinen Code benutzt. Bei mir steht @zTmp[1] (Zeiger auf erstes Zeichen) und Length(zTmp)-1. Und vergiss nicht, die Länge des Strings mit SetLength zuerst auf die richtige Länge zu setzen.

EWeiss 6. Okt 2008 08:26

Re: array of char UpperCase
 
Zitat:

Zitat von DeddyH
Wenn zTmp ein String ist:
Delphi-Quellcode:
GetShortPathName(sResource, @zTmp[1], Length(zTmp));

Nein es wird nichts zurückgeliefert
zTmp ist leer wenn ich einen string dafür verwende

gruss Emil

Namenloser 6. Okt 2008 08:30

Re: array of char UpperCase
 
Delphi-Quellcode:
procedure Test(sResource: pChar);
var
  zTmp: string;
begin
  SetLength(zTmp, 256);
  SetLength(zTmp, GetShortPathName(sResource, @zTmp[1], length(zTmp)-1));
  zTmp := UpperCase(zTmp);
  showmessage(ztmp);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Test('c:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2904.0\Microsoft.DirectX.Direct3DX.xml');
end;
Gibt bei mir folgendes aus:

Code:
---------------------------
Project1
---------------------------
C:\WINDOWS\MICROS~1.NET\DIRECT~1\102904~1.0\MICROS~1.XML
---------------------------
OK  
---------------------------

EWeiss 6. Okt 2008 08:32

Re: array of char UpperCase
 
Zitat:

Zitat von NamenLozer
Delphi-Quellcode:
procedure Test(sResource: pChar);
var
  zTmp: string;
begin
  SetLength(zTmp, 256);
  SetLength(zTmp, GetShortPathName(sResource, @zTmp[1], length(zTmp)-1));
  zTmp := UpperCase(zTmp);
  showmessage(ztmp);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Test('c:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2904.0\Microsoft.DirectX.Direct3DX.xml');
end;
Gibt bei mir folgendes aus:

Code:
---------------------------
Project1
---------------------------
C:\WINDOWS\MICROS~1.NET\DIRECT~1\102904~1.0\MICROS~1.XML
---------------------------
OK  
---------------------------

Sorry tut mir leid :oops:
Habe nicht ganz mitbekommen auf was du hinaus wolltest das funktioniert natürlich dann auch mit string
und nimmt mir viel Arbeit ab so wie du schon sagtest.
Hatte die länge nicht mit berücksichtigt.
Danke schön ;)

gruss Emil

DeddyH 6. Okt 2008 08:43

Re: array of char UpperCase
 
GetShortPathName gibt Dir übrigens die benötigte Länge zurück, wenn der Puffer zu klein ist.
Delphi-Quellcode:
SetLength(zTmp,GetShortPathName(sResource,nil,0));
GetShortPathName(sResource,@zTmp[1],Length(zTmp));


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 Uhr.
Seite 2 von 3     12 3      

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