CharUpperBuff()
-
- Beiträge: 50
- Registriert: Fr 23. Nov 2012, 13:27
- OS, Lazarus, FPC: Win10/Linux Mint - Lazarus 2.2/trunk
- CPU-Target: 32/64Bit
CharUpperBuff()
Hallo,
eine Frage an die Leute die mit der FPC trunk Version arbeiten. Ist diese Funktion in der trunk Version? In FPC 2.6.2 gibt es sie nicht. Hab die winapi.inc jetzt selbst erweitert. Ein CharLowerBuff() gibt es in der FPC 2.6.2, da war der Weg zu einer CharUpperBuf() nicht weit...
Beste Grüße
eine Frage an die Leute die mit der FPC trunk Version arbeiten. Ist diese Funktion in der trunk Version? In FPC 2.6.2 gibt es sie nicht. Hab die winapi.inc jetzt selbst erweitert. Ein CharLowerBuff() gibt es in der FPC 2.6.2, da war der Weg zu einer CharUpperBuf() nicht weit...
Beste Grüße
Re: CharUpperBuff()
Nur mal so um Missverständnisse zu vermeiden: Du benötigst eine Nicht-Unicode fähiges Uppercase, welches mit PChar arbeitet?
-
- Beiträge: 50
- Registriert: Fr 23. Nov 2012, 13:27
- OS, Lazarus, FPC: Win10/Linux Mint - Lazarus 2.2/trunk
- CPU-Target: 32/64Bit
Re: CharUpperBuff()
Es wird in der aktuellen trunk Version der IBObjects eingesetzt. Beim parsen von SQL Statements kommen in der Regel wohl keine Unicode Zeichen vor. Der Entwickler der Lazarus/FPC Portierung arbeitet (leider) mit der FPC trunk Version, woraus resultiert, dass ich ab und zu die packages nicht kompiliert bekomme.
Re: CharUpperBuff()
Ich habe die FPC Version vom 31.03.2013, und dort gibt es das nicht.
Das kann man auch hier kontrollieren:
http://svn.freepascal.org/cgi-bin/viewv ... xt%2Fplain
Wahrscheinlich nicht benötigt, da für Parser ein lowercase ausreicht.
Das kann man auch hier kontrollieren:
http://svn.freepascal.org/cgi-bin/viewv ... xt%2Fplain
Wahrscheinlich nicht benötigt, da für Parser ein lowercase ausreicht.
-
- Beiträge: 50
- Registriert: Fr 23. Nov 2012, 13:27
- OS, Lazarus, FPC: Win10/Linux Mint - Lazarus 2.2/trunk
- CPU-Target: 32/64Bit
Re: CharUpperBuff()
Hm, wird in einer Hilfsfunktion mit Namen
procedure NonLitsUpperCase( var AStr: string )
benötigt. Anhand des Prozedurnamens vermute ich mal das tatsächlich ein UpperCase benötigt wird. Der Interbase/Firebird Datenbankserver will bestimmte Sachen (z.B. Feldnamen, Tabellennamen etc.) in Großbuchstaben haben sonst müssen diese Dinge in Anführungsstrichen gesetzt werden.
procedure NonLitsUpperCase( var AStr: string )
benötigt. Anhand des Prozedurnamens vermute ich mal das tatsächlich ein UpperCase benötigt wird. Der Interbase/Firebird Datenbankserver will bestimmte Sachen (z.B. Feldnamen, Tabellennamen etc.) in Großbuchstaben haben sonst müssen diese Dinge in Anführungsstrichen gesetzt werden.
Re: CharUpperBuff()
Lässt sich praktisch durch ein einfaches Uppercase ersetzen, oder nicht?Groffy hat geschrieben:Hm, wird in einer Hilfsfunktion mit Namen
procedure NonLitsUpperCase( var AStr: string )
benötigt. Anhand des Prozedurnamens vermute ich mal das tatsächlich ein UpperCase benötigt wird. Der Interbase/Firebird Datenbankserver will bestimmte Sachen (z.B. Feldnamen, Tabellennamen etc.) in Großbuchstaben haben sonst müssen diese Dinge in Anführungsstrichen gesetzt werden.
-
- Beiträge: 50
- Registriert: Fr 23. Nov 2012, 13:27
- OS, Lazarus, FPC: Win10/Linux Mint - Lazarus 2.2/trunk
- CPU-Target: 32/64Bit
Re: CharUpperBuff()
Sicherlich 
Die Zeile
CharUpperBuff( @ch, 1 );
hätte einfach nur durch ein
ch:= CharUpper( ch );
ersetzt werden müssen...
Ich war trotzdem neugierig wieso diese Prozedur im Sourcecode stand. In ascdef.inc ist diese Funktion tatsächlich deklariert. Als external in user32.dll. Das dürfte für die Win Platformen relevant sein, ist die Frage wieso die nicht gefunden wird...
function CharUpperBuff(lpsz:LPSTR; cchLength:DWORD):DWORD; external 'user32' name 'CharUpperBuffA';

Die Zeile
CharUpperBuff( @ch, 1 );
hätte einfach nur durch ein
ch:= CharUpper( ch );
ersetzt werden müssen...
Ich war trotzdem neugierig wieso diese Prozedur im Sourcecode stand. In ascdef.inc ist diese Funktion tatsächlich deklariert. Als external in user32.dll. Das dürfte für die Win Platformen relevant sein, ist die Frage wieso die nicht gefunden wird...
function CharUpperBuff(lpsz:LPSTR; cchLength:DWORD):DWORD; external 'user32' name 'CharUpperBuffA';
Re: CharUpperBuff()
Also mit
geht's schon, oder? Ist halt nicht X-Plattform.
Code: Alles auswählen
uses windows;
-
- Beiträge: 50
- Registriert: Fr 23. Nov 2012, 13:27
- OS, Lazarus, FPC: Win10/Linux Mint - Lazarus 2.2/trunk
- CPU-Target: 32/64Bit
Re: CharUpperBuff()
Gute Frage, ich bin davon ausgegangen. Die visuellen Controls laufen auch mit dem QT Widgets Set. Allerdings habe ich das alles nur auf Win XP / Win7 Systemen laufen, was ja nicht wirklich aussagekräftig bezüglich der Portabilität ist. Ich bin bislang davon ausgegangen, dass das Lazarus Konzept an sich Multiplatform ist. D.h. es gibt einen Abstraktionslayer der auf nicht Windows Systemen die Funktionen entsprechend zur Verfügung stellt. Ich hatte mal einen Blick in die cross platform Nachbildung des Windows messaging Systems geworfen (unit LMessages). Mit dem direkten einbinden der unit windows hebelt man das also aus?
Re: CharUpperBuff()
Ist auch so. Deshalb wirdGroffy hat geschrieben:t. D.h. es gibt einen Abstraktionslayer der auf nicht Windows Systemen die Funktionen entsprechend zur Verfügung stellt.
CharLowerBuff()
per
uses LCLIntf;
plattformunabhängig angeboten. Nur CharUpperBuff() steht aus irgendwelchen Gründen nicht plattformunabhängig zur Verfügung.
Wahrscheinlich wurde es bisher nicht vermisst.
-
- Beiträge: 50
- Registriert: Fr 23. Nov 2012, 13:27
- OS, Lazarus, FPC: Win10/Linux Mint - Lazarus 2.2/trunk
- CPU-Target: 32/64Bit
Re: CharUpperBuff()
Jetzt schon :theo hat geschrieben: Nur CharUpperBuff() steht aus irgendwelchen Gründen nicht plattformunabhängig zur Verfügung.
Wahrscheinlich wurde es bisher nicht vermisst.
Revision 42580 : LCL: Implement CharUpperBuff function. Issue #24493, patch from Stephano