Podmiana tekstu w pliku

0

Witam serdecznie,
Mam taki problem. Otwieram pewien plik z zawartością i podmieniam w nim róże teksty np {TEST}. CHciałbym podmienić jedna z takich 'zmiennych' ale nie stringiem tylko tekstem w kilku linijkach np zmienną TStringList? Czy istnieje taka możliwosć lub inny sposób żeby w konkretnym miejscu pliku zmienił tekst dodają swój w postaci kilku linii? Bo jeśli połacze to w jedna linie to bedczie ona baardzo długa. Więc odpada takie rozwiązanie.

Dziękuje za pomoc.

0

Mi się wydaje że czegoś takiego nie zrobisz w ten sposób. Ja zainteresował bym się na twoim miejscu strumieniami (choć bez nich można się obyć). Spróbuj kopiować swój plik od początku do miejsca w którym chcesz dopisać tekst, dopisać ten tekst i skopiować resztę pliku. To tylko taki prosty pomysł, pewnie są lepsze, ale może ci się przyda.

0

A po co Ci strumienie? Podstawiasz TStringList.Text i masz :).

0

Ale przecieŻ jeżeli on chce w dowolnym miejscu pliku dodać kilka linijek, w miejsce jakiegoś innego tekstu (nie koniecznie tej samej długości) to jest ryzyko że jakieś dane zostaną nadpisane. Czyż nie?

0

Nie. Oczywiście pod warunkiem, że się prawidłowo podmienia. Przykładowo:

Text:=Copy(Text, 1, Pos('{WSTAW_DŁUGI_TEXT}'-1) + StringList.Text + String(PChar(Text)+Pos('{WSTAW_DŁUGI_TEXT}', Text)+Length('{WSTAW_DŁUGI_TEXT}'));

I w miejscu {WSTAW_DŁUGI_TEXT} pojawi się zawartość StringList. Nawet wówczas, gdy będzie tam tekst dużo dłuższy/krótszy niż "{WSTAW_DŁUGI_TEXT}"

0

dziękuje bardzo spróbowałem z tym TStringList.Text i wszystko działa jak należy :) Teraz nie chce już tworzyc nowego wątku... wie ktoś moze jak łądujac zdjecia przy pomocy OpenPictureDialog do ListView odczytać wymiary pliku? bo nazwe, ścieżkę i rozmiar mi sie udało teraz tylko wymiary... Pozdrawiam.

0

Zgodze się że można to tak zrobić, ale ty operujesz na łańcuchu w pamięci komputera, żeby to wstawić gdzieś w środek pliku i tak musi go przepisac.

0

@forest: Chyba najprostszym rozwiązaniem jest załadowanie do TBitmap i sprawdzenie jego Width i Height. Oczywiście da się otworzyć tylko nagłówek i z niego wyciągać takie dane, ale wymaga to zagłębienie się w strukturę pliku obrazu (tak mi się zdaje, że nie ma żadnej funkcji, która by to realizowała w ten sposób na gotowca), chyba, że masz bardzo dużo tych plików (ew. są bardzo duże) i takie otwieranie kosztuje Cię zbyt dużo czasu. Wtedy trzeba chyba kombinować z czystaniem nagłówka i jego ręczną interpretacją.

@volgar: Jak tak na to spojrzeć, to faktycznie. Rzecz w tym, że autor mówił o podmienianiu większej ilości takich zmiennych, przy czym nic nie wspominał, że muszą być tej samej długości - zakładam, że już miał jakiś sposób i statystycznie rzecz biorąc prawdopodobnie opierał się na operowaniu w pamięci.
Sądząc po strukturze wygląda to na coś w stylu szablonów albo czegoś takiego, więc mało prawdopodobne, by były to tak duże pliki, by opłacało się kombinować ze strumieniami. Podkreślam, że są to moje domysły, a nie 100% pewność.

0

dziękuje za pomoc zrobiłem tak jak radzicie i udało sie :) ale niestety musiałem użyć TPicture bo tBitmap to tylko chyba pliki bmp obsługuje... Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1