-
Content Count
34 -
Joined
-
Last visited
Community Reputation
1 NeutralRecent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
-
But how can R.Name be 'Duo Canopée play Ständchen by Franz Schubert on a 1968 D. Friederich Guitar & Violoncello.webm' and widechar W = R.Name[10] a plain e? Yes i was using [ blocks ], thanks.
-
the forum does not display the code correctly, i have to use spaces in the bracket like newName[ i ] Forgot to say, other files with diacritics are catched, just this particular one is not. Duo Canopée play Ständchen by Franz Schubert on a 1968 D. Friederich Guitar & Violoncello.webm If i put this in the findfirst/next loop R.Name is still the original but ch becomes plain 'e' if (R.Name.Pos("Duo Canop")) { WideChar ch = R.Name[10]; }
-
You are right, it was a my fault, i did not test it properly, the file is catched with plain RTL functions, only that file is never having detected to have diacritics, never gets added to the listview. const int DIACRITIC_COUNT = 29; static const WideChar diacritics[DIACRITIC_COUNT] = { L'á', L'à', L'â', L'ä', L'ã', L'å', L'é', L'è', L'ê', L'ë', L'í', L'ì', L'î', L'ï', L'ó', L'ò', L'ô', L'ö', L'õ', L'ú', L'ù', L'û', L'ü', L'ý', L'ÿ', L'ñ', L'ç', L'Ñ' }; static const WideChar replacements[DIACRITIC_COUNT] = { L'a', L'a', L'a', L'a', L'a', L'a', L'e', L'e', L'e', L'e', L'i', L'i', L'i', L'i', L'o', L'o', L'o', L'o', L'o', L'u', L'u', L'u', L'u', L'y', L'y', L'n', L'c', L'N' }; if (FindFirst(dir + "\\*.*", faAnyFile, R) == 0) do if(!(R.Attr & faDirectory)) { String newName = R.Name; bool changed = false; for(int i = 1; i <= newName.Length(); i++) for (int j = 0; j < DIACRITIC_COUNT; j++) { if(newName == diacritics[j]) { newName = replacements[j]; changed = true; } } if(changed) { TListItem* item = ListView1->Items->Add(); item->Caption = R.Name; item->SubItems->Add(newName); } } while (FindNext(R) == 0); FindClose(R);
-
Hi Remy, the files i mention really did not show up using the RTL ones. Off course i would prefer that. And using the debugger i got strange names like Canope´e play Sta¨ndchen.
-
The debugger displays the name like Debug Output: Duo Canope´e play Sta¨ndchen by Franz Schubert on a 1968 D. Friederich Guitar & Violoncello.webm How do i catch these so i can rename them? Edit, had to use the windows FindFirstFileW to get it right. Ps, I have used c++builder 12 in the past, this one is real shitty. FindFile/Next not working properly. Properties not surviving oncreate(), i had a crash that trashed my source completely, mwooooooh. I'm not gonna port my main app to this version.
-
damn, it should be, newName [ i ]
-
it should read newName [ i ] = replacements[j]; but the board does not let me change that.
-
i have this code, but it does not catch the filename 'Duo Canopée play Ständchen by Franz Schubert on a 1968 D. Friederich Guitar & Violoncello.webm', why not??? #define DIACRITIC_COUNT 10 static const WideChar diacritics[DIACRITIC_COUNT] = { L'á', L'à', L'â', L'ä', L'ã', L'å', L'é', L'è', L'ê', L'ë', }; static const WideChar replacements[DIACRITIC_COUNT] = { L'a', L'a', L'a', L'a', L'a', L'a', L'e', L'e', L'e', L'e', }; if(FindFirst(dir + L"\\*.*", faAnyFile, sr) == 0) { do { if(!(sr.Attr & faDirectory)) { String newName = sr.Name; bool changed = false; for(int i = 1; i <= newName.Length(); i++) { WideChar ch = newName; for (int j = 0; j < DIACRITIC_COUNT; j++) { if(ch == diacritics[j]) { newName = replacements[j]; changed = true; } } } if(changed) { TListItem* item = ListView1->Items->Add(); item->Caption = sr.Name; item->SubItems->Add(newName); } } } while(FindNext(sr) == 0); FindClose(sr); }
-
communicate between 2 progs with sendmessage.
JeanCremers replied to JeanCremers's topic in Windows API
Thanks a bunch again Remy, i've got it working like a charm. -
communicate between 2 progs with sendmessage.
JeanCremers replied to JeanCremers's topic in Windows API
Thanks Remy. I'm getting EOSError 'System Error. Code 1411, Class does not exist.' This is c++builder 6 🙂 Edit, i also tried void __fastcall TAstroClockMainForm::ApplicationEvents1Message(tagMSG &Msg, bool &Handled) { if (Msg.message == WM_APP) Application->MessageBox("", "", MB_OK); } and HWND hwnd = FindWindow("TAstroclockMainForm", NULL); if (hwnd) SendMessage(hwnd, WM_APP, 0, 0); -
Ok, so one prog does for instance HWND hwnd = FindWindow(NULL, "myprog"); if (hwnd) SendMessage(hwnd, WM_USER, 0, 0); And what exactly should the other prog do? I have this, but it's not working. in form constructor Application->HookMainWindow(&AppHook); bool __fastcall TMainForm::AppHook(TMessage &Message) { if (Message.Msg == WM_USER) { Application->MessageBox("", "", MB_OK); return true; } return false; } But i'm not getting any msg there. Thanks.
-
Can't do, i need type double, its for a script language and it has no currency type, but it has double. And this works for my needs.
-
I'm ok with my current solution, it does what i need it to do.
-
ps, it's not only meant for doing 0.1 , it should also handle other values.
-
I'm doing something like this, for my purposes it works fine. double r = 0.1, inc = 0.1; String S; for (int i = 0; i < 80; i++) { S = FloatToStr(r); r = StrToFloat(S) + inc; ListBox1->Items->Add(S);