forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   PureBasic (http://forum.boolean.name/forumdisplay.php?f=90)
-   -   как поместить данные из памяти в строку? (http://forum.boolean.name/showthread.php?t=15802)

barsunduk 07.11.2011 19:03

как поместить данные из памяти в строку?
 
как поместить данные из памяти в строку?

вопрос, наверное, глупый, но для меня все эти указатели пока темный лес. вопрос вот в чем:

я пакую текст в файл Packname$. кодировка текста неизвестна, заканчивается ли строка на #0 - тоже не знаю, но разделители #13 там есть точно. впрочем, это неважно.

PHP код:

CreatePack(Packname$)
AddPackFile("text.txt"9)
ClosePack 

потом, когда понадобится, я собираюсь извлечь содержимое всего текстового файла в одну строку.

PHP код:

Procedure.s GetText(Filename.s)
  Protected 
Mem.l
  OpenPack
(Filename)
  Protected 
Size.PackFileSize()
  
Mem NextPackFile()
  
ClosePack()
  Return 
PeekS(MemSize)
EndProcedure 

итак, в Mem у меня адрес памяти, где лежит распакованный тектовый файл, в Size - длина текста в байтах (но не в символах). как мне содержимое памяти в строковую переменную запихать? я что-то не уверен, что всё правильно делаю, потому что в справке сказано, чтов Text$ = PeekS(*MemoryBuffer [, Length [, Flags]] ) Length - это длина строки в символах, а не в байтах.

barsunduk 07.11.2011 21:51

Ответ: как поместить данные из памяти в строку?
 
всё, отбой. вроде работает. PackFileSize() вызывается после NextPackFile()

PHP код:

извлечь из архива список содержащихся в нем файлов
jopaU Jammed Objects Packaged Archive (Unit)
Procedure.s GetJopaList(JopaFilename.s)
  Protected 
Text.""
  
If FileExists(JopaFilename)
    
OpenPack(JopaFilename)
    
Text PeekS(NextPackFile())
    
Text Left(TextPackFileSize())
    
ClosePack()
  EndIf
  
ProcedureReturn Text
EndProcedure 



Часовой пояс GMT +4, время: 22:14.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot