Dúvida sobre strings, lendo txt

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Dúvida sobre strings, lendo txt

Mensagem por icarodantas123 em Dom 09 Ago 2015, 22:48

Pessoal, quero que meu game maker leia um arquivo txt, o código que eu estou usando é esse:
Código:
if quantia<=140
{
texto=file_text_read_string(file);
casa_id=real(string_copy(texto,1,string_pos(" ",texto)-1));
string_delete(texto,1,string_pos(" ",texto)-1);
casa_tipo=string_copy(texto,1,string_pos(" ",texto)-1);
string_delete(texto,1,string_pos(" ",texto)-1);
casa_xx=real(string_copy(texto,1,string_pos(" ",texto)-1));
string_delete(texto,1,string_pos(" ",texto)-1);
casa_yy=real(string_copy(texto,1,string_pos(" ",texto)-1));
string_delete(texto,1,string_pos(" ",texto)-1);
file_text_readln(file);
instance_create(casa_xx,casa_yy,obj_casa)
obj_casa.casa_id=casa_id
obj_casa.casa_id=casa_tipo
}
else
{
file_text_close(file)
}
o arquivo txt é esse:
floor.txt escreveu:
1 pallet 493 1225 2
2 poke 484 1134 1 3
3 event 446 1053 2 4
4 poke 507 994 3 5
5 viridian 466 900 4 6
6 event 472 798 5 7
7 poke 438 733 6 8
8 event 505 695 7 9
9 poke 585 661 8 10
10 poke 611 589 9 11
11 poke 522 581 10 12
12 poke 417 605 11 13
13 event 283 666 12 14
14 blank 200 630 13 15
15 poke 133 541 14 16 20
16 poke 106 438 15 17
17 event 146 351 16 18
18 poke 174 248 17 19
19 event 273 326 18 20
20 poke 233 483 15 21
21 poke 344 447 19 20 22
22 blank 504 440 21 23
23 pewter 545 346 22 24
24 event 493 260 23 25
25 poke 411 200 24 26
26 event 314 153 25 27
27 poke 252 86 26 29
28 poke 70 103 26 29
29 poke 361 39 27 30
30 poke 457 101 29 31
31 blank 553 153 30 32
32 event 594 57 31 33
33 poke 676 132 32 34
34 poke 742 36 33 35
35 poke 819 137 34 36
36 poke 942 61 35 37
37 poke 1071 110 36 38
38 event 1022 202 37 39
39 blank 1032 309 38 40
40 poke 1127 386 39 41
41 poke 1215 307 40 42
42 cerulean 1414 263 41 43 128
43 poke 1388 175 42 44
44 poke 1504 154 43 45
45 blank 1614 126 44 46
46 poke 1590 227 45 47
47 event 1590 310 46 48
48 poke 1700 278 47 49
49 poke 1792 252 48 50
50 poke 1903 266 49 51
51 poke 1988 306 50 52
52 event 1881 378 51 53
53 blank 1917 454 52 54
54 poke 2014 465 53 55
55 lavender 1966 573 54 56 116
56 event 1945 663 55 57
57 event 1973 736 56 58
58 blank 1983 859 57 59 83 117
59 poke 2050 779 58 60
60 poke 2105 668 59 61
61 poke 2156 563 60 62
62 blank 2226 476 61 63
63 poke 2271 334 62 64
64 poke 2201 217 63 65
65 poke 2080 163 64 66
66 poke 1957 126 65 67
67 event 1830 107 66 68
68 poke 1729 46 67 69
69 blank 1892 41 68 70
70 event 2043 42 69 71
71 blank 2184 61 70 72
72 poke 2291 96 71 73
73 poke 2342 211 72 74
74 event 2358 345 73 75
75 poke 2355 476 74 76
76 poke 2353 620 75 77
77 poke 2349 768 76 78
78 poke 2342 885 77 79
79 blank 2331 1025 78 80
80 poke 2325 1192 79 81
81 poke 2193 1236 80 82
82 event 2076 1168 81 83
83 poke 1951 1035 58 82 84
84 event 1851 1076 83 85
85 poke 1832 1171 84 86
86 poke 1728 1181 85 87
87 poke 1716 1301 86 88
88 poke 1629 1214 87 89
89 event 1588 1295 88 90
90 blank 1483 1335 89 91 129
91 poke 1398 1263 90 92
92 poke 1317 1193 91 93
93 poke 1205 1247 92 94
94 fuchsia 1210 1376 93 95 129
95 blank 1037 1312 94 96
96 blank 950 1250 95 97
97 event 859 1186 96 98
98 event 776 1119 97 99
99 poke 694 1041 98 100
100 poke 694 962 99 101
101 event 741 889 100 102
102 poke 691 819 101 103
103 poke 769 795 102 104
104 poke 831 747 103 105
105 poke 805 671 104 106
106 event 764 611 105 107
107 blank 825 566 106 108
108 celadon 972 537 107 109
109 event 1132 568 108 110
110 poke 1197 639 109 111
111 poke 1275 610 110 112
112 saffron 1419 580 111 113 125 126
113 event 1564 587 112 114
114 poke 1650 596 113 115
115 event 1740 599 114 116
116 event 1828 591 115 55
117 poke 1891 841 118 58
118 poke 1836 901 117 119 130
119 event 1758 918 118 120
120 event 1650 899 119 121 131
121 event 1577 868 120 122
122 vermilion 1448 902 121 123
123 poke 1398 810 122 124
124 poke 1355 732 123 125
125 event 1420 678 124 112
126 event 1433 498 112 127
127 event 1387 430 126 128
128 blank 1411 356 127 42
129 event 1369 1346 94 90
130 poke 1770 821 131 118
131 event 1692 834 130 120
132 poke 1090 1456 94 133
133 poke 1025 1501 132 134
134 poke 933 1505 133 135
135 blank 833 1508 134 136
136 poke 817 1410 135 137
137 blank 732 1352 136 138
138 cinnabar 632 1487 137 139
139 poke 471 1447 138 140
140 event 444 1340 139
A verdadeira dúvida é saber se esse string_pos() me da o character desejado mais próximo ou mais longe, no caso de ter mais que um... No caso estou separando espaços e tem mais de um, quero o mais próximo à esquerda, se tiver outro código que posso usar, ficaria grato se puderem me indicar...

icarodantas123

Número de Mensagens : 128
Data de inscrição : 24/05/2013
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Dúvida sobre strings, lendo txt

Mensagem por felipejoys em Seg 10 Ago 2015, 02:39

Em "string_delete(texto,1,string_pos(" ",texto)-1);" você parece inverter o segundo e terceiro argumentos.

A função string_pos() retorna o mais próximo.

felipejoys

Número de Mensagens : 56
Data de inscrição : 29/12/2013
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Dúvida sobre strings, lendo txt

Mensagem por icarodantas123 em Seg 10 Ago 2015, 20:14

eu estou usando correto, http://docs.yoyogames.com/source/dadiospice/002_reference/strings/string_pos.html

icarodantas123

Número de Mensagens : 128
Data de inscrição : 24/05/2013
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Dúvida sobre strings, lendo txt

Mensagem por Pai véi em Sab 22 Ago 2015, 20:31

Você está cometendo dois erros ao usar a função string_delete.


  1. Você não está armazenando a string que ela retorna. Veja bem: a função não deleta apenas. Ela deleta e retorna a string deletada.

  2. Você errou o argumento count para dizer a quantidade de caracteres que ela deve apagar. Por ter mantido o -1 após o string_pos(" ",texto), ela ainda mantém o espaço que sucede o primeiro termo que você cortou.


Você fez assim:

Código:
string_delete(texto,1,string_pos(" ",texto)-1);

Mas a maneira correta é essa:

Código:
texto = string_delete(texto,1,string_pos(" ",texto));

Boa sorte.

Pai véi

Número de Mensagens : 14
Data de inscrição : 27/02/2014
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Dúvida sobre strings, lendo txt

Mensagem por Conteúdo patrocinado Hoje à(s) 17:18


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum