2009-08-24 15 views
35

Czy istnieje limit rozmiaru danych, które można skopiować do schowka? Używam VB6 i muszę skopiować bloki danych do schowka.Limit rozmiaru schowka

+0

Czy to jest pytanie programistyczne? Jeśli tak, to daj nam trochę więcej szczegółów, abyśmy mogli Ci pomóc. Jeśli nie, to pytanie należy gdzie indziej. – Bevan

+2

Tak, próbuję zapisać dane do schowka za pomocą vb6. Właśnie dlatego zastanawiam się nad jego limitem. –

Odpowiedz

0

Zależy od ilości pamięci w systemie.

+3

Nie sądzę, ale "ilość pamięci" jest zbyt ogólnikowa. Phsyical RAM lub pamięć wirtualna? A co z systemami z pamięcią> 4 GB i aplikacjami 32-bitowymi? –

1

Większość danych jest kopiowana jako odniesienie, a nie same dane, dzięki czemu można kopiować większość dowolnych rozmiarów. Tekst jest faktycznie skopiowany i z tego, co wiem, ilość danych jest ograniczona do tego, ile pamięci RAM jest obecnie dostępne. Pamiętaj, że jeśli vb6 sobie z tym poradzi, jestem pewien, że schowek sobie z tym poradzi.

+6

(-1) Większość danych nie jest kopiowana przez odniesienie. W najprostszym przypadku zmienna łańcuchowa w aplikacji jest kopiowana do globalnego bloku pamięci, jak wskazał Jan. W niektórych sytuacjach kopiowanie/wklejanie obejmuje wskaźniki do pamięci wewnętrznej, ale zwykle jest to format zastrzeżony/prywatny. W przypadku typowych rzeczy, takich jak AnsiString, UnicodeString, RTF, HTML, Bitmap itp., Odbywa się to przy użyciu współużytkowanej pamięci globalnej, co oznacza, że ​​musi istnieć druga kopia danych. –

27

Przywoływanie aplikacji GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE) do przydzielania pamięci dla danych, które mają być przechowywane w schowku i udostępniania jej innym aplikacjom. W przypadku aplikacji 32-bitowych GlobalAlloc może przydzielać bloki o wielkości do 2 GB lub nawet do ilości pamięci wirtualnej na komputerze, w zależności od tego, która wartość jest mniejsza. Schowek systemu Windows nie narzuca żadnych innych ograniczeń rozmiaru.

1

Jako informacja: można myśleć, że bufor schowka jest mały podczas kopiowania tekstu z pewnymi znakami <NUL> (ascii 0) do edytora.

W takim przypadku problem nie dotyczy rozmiaru schowka, ale edytor rozpoznaje jako koniec tekstu i nie wstawia już po tym znaku.

+6

Powinno to być ** komentarz ** zamiast ** odpowiedź **. Jest to informacja, ale nie próbuje odpowiedzieć na pytanie. – Adam

Powiązane problemy