![]() |
Umwandlungen
h! leute,
folgendes Problem. Ich weiss ich sollte mich auf jeden fall mit den Anfänger tuts beschäftigen, aber ich Frag lieber.
Delphi-Quellcode:
Msüsste jetzt doch in xRes den wert von edtResX haben. Hab ich auch.
var
xRes, yRes, FreqRate: Array[0..5] of Char; ... GetDlgItemText(Dlg, edtResX, xRes, 5); Wie krieg ich den jetzt xRes umgewandelt in z.B: String -> gibt auch noc Str, hab aber vergessen wie die funct ist String -> String(xRes) //glaub ich Integer -> INTEGER(xRes) //glaub ich auch PChar -> PChar(xRes) //glaub ich auch noch Cardinal -> ??? Benutzen tu ich nur die Units Windows, Messages. Ich weiss die Frage ist etwas dumm, aber ich hasse die strenge von Delphi in diesem Fall. :wall: thnx |
Re: Umwandlungen
Moin TopDogg,
meine Kristallkugel hat zwar ein paar Kratzer, aber ich glaub' ich hab' trotzdem erraten was Du willst ;-) Du liest einen numerischen Wert aus einem Editfeld aus. Um einen String in einen numerischen Wert (32-Bit) zu verwandeln kannst Du StrToInt oder StrToIntDef verwenden. Soll das Ergebnis als Cardinal angesehen werden, müsstest Du es noch mit cardinal(StrToInt(...)) umwandeln. Als String müsstest Du es direkt verwenden können. |
Re: Umwandlungen
gute Kugel :lol:
das prob ist, das ich StrToInt nicht habe, da ich nur Windows und Messages von den units benutze. Ich versuch es nochmal zu erklären.
Delphi-Quellcode:
edtResx, edtResy, edtRate sind EditFelder.
var
xRes, yRes, FreqRate: Array[0..5] of Char; function NewRes(XRes, YRes: DWORD; Frequency: Cardinal): Integer; var DevMode: TDeviceMode; begin EnumDisplaySettings(nil, 0, DevMode); DevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_DISPLAYFREQUENCY; DevMode.dmPelsWidth := XRes; DevMode.dmPelsHeight := YRes; DevMode.dmDisplayFrequency := Frequency; Result := ChangeDisplaySettings(DevMode, 0); end; ... GetDlgItemText(Dlg, edtResX, xRes, 5); GetDlgItemText(Dlg, edtResY, yRes, 5); GetDlgItemText(Dlg, edtRate, FreqRate, 5); if MessageBox(Dlg, 'Want to Change?', 'Question.', MB_YESNO or MB_ICONQUESTION) = IDYES then if not NewRes(xRes, yRes, FreqRate) = DISP_CHANGE_SUCCESSFUL then Exit; end; ... xRes, yRes und FreqRate sind aber Array of Char. Da komm ich nicht weiter. Hoffe könnt mir weiter helfen, und wen nich dan darauf geschissen da ich ja nur die func NewRes testen wollte und in die kan ich ja von anfang an die werte eintragen und brauch sie nicht aus edits raus zu lesen. thnx |
Re: Umwandlungen
Moin TopDogg,
wenn Du davon ausgehen kannst, dass die Editfelder gültige Werte enthalten kannst Du es ja ungefähr so machen. Die Umwandlung muss "zu Fuss" erfolgen.
Delphi-Quellcode:
(kleiner Schnellschuss ;-) )
var
iCount : integer; i : integer; xRes, yRes, FreqRate: Array[0..5] of Char; iResult : integer; iMul : integer; begin iCount := pos(#00,xRes); if iCount = 0 then iCount := 5; iResult := 0; iMul := 10; for i := iCount-1 downto 0 do begin iResult := iResult + (ord(xRes[i])-$30)*iMul; iMul := iMul*10; end; end; BTW: Ein String ist im Wesentlichen nicht viel anders als ein array of char. |
Re: Umwandlungen
Alles was das Herz begehrt:
Delphi-Quellcode:
function StrToInt(s: string): Integer;
var code: integer; begin val(s, result, code); end; function StrToFloat(s: string): Extended; var code: integer; begin val(s, result, code); end; function IntToStr(Int: integer): string; begin Str(Int, result); end; function FloatToStr(Value: Extended; Width, Decimals: Integer): string; begin Str(Value:Width:Decimals, result); end; |
Re: Umwandlungen
Moin Luckie,
stimmt, val hab' ich irgendwie verdrängt ;-) |
Re: Umwandlungen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 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 by Thomas Breitkreuz